generated from mwc/lab_terminal
	Initial commit
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								.assets/fork.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.assets/fork.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 3.8 KiB  | 
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
bag
 | 
			
		||||
treasure.png
 | 
			
		||||
key.txt
 | 
			
		||||
.timer
 | 
			
		||||
							
								
								
									
										48
									
								
								adventure/seafloor/coral_reef/chest.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								adventure/seafloor/coral_reef/chest.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
# This is a Python program. You should run it by typing "chest.py"
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
from urllib.request import urlretrieve
 | 
			
		||||
import threading
 | 
			
		||||
import datetime
 | 
			
		||||
 | 
			
		||||
def treasure():
 | 
			
		||||
    print("    something shining brightly from within, so bright you can't")
 | 
			
		||||
    print("    quite make out what it is.\n")
 | 
			
		||||
 | 
			
		||||
def monster1():
 | 
			
		||||
    print("    *rumble* *rumble* *rumble* \n")
 | 
			
		||||
    print("    Around the reef, nothing seems out of place.\n")
 | 
			
		||||
 | 
			
		||||
def monster2():
 | 
			
		||||
    print("    *rumble* *rumble* *rumble* \n")
 | 
			
		||||
    print("    A SEA MONSTER APPEARS FROM THE REEF! \n")
 | 
			
		||||
    print("    The sea monster must have seen you open the chest!")
 | 
			
		||||
    print("    There's no time to squander. You grab the treasure from the chest without taking a closer look!")
 | 
			
		||||
    print("    Quick, use mkdir to make a \"bag\" directory and mv to")
 | 
			
		||||
    print("    hide the treasure.jpg in the bag. ")
 | 
			
		||||
    print("    Then get back to the surface ASAP! The monster is coming! \n")
 | 
			
		||||
    print("    Don't forget to take your treasure bag with you up to the top directory!")
 | 
			
		||||
    now = datetime.datetime.now()
 | 
			
		||||
    with open(".timer", "w") as timerfile:
 | 
			
		||||
        timerfile.write(str(now))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
secret = "318"
 | 
			
		||||
 | 
			
		||||
print("    You approach the chest and see that the lock is surprisingly free of rust.")
 | 
			
		||||
print("    In fact, the code dials turn smoothly. Try entering a code.")
 | 
			
		||||
 | 
			
		||||
guess = input("    > ")
 | 
			
		||||
 | 
			
		||||
if guess == secret:
 | 
			
		||||
    print("    The chest snaps open, releasing several huge air bubbles.")
 | 
			
		||||
    print("    You look into the chest and see...\n")
 | 
			
		||||
    os.system('cp ./../../../.assets/fork.jpg treasure.jpg')
 | 
			
		||||
    timer1 = threading.Timer(1.0, treasure)
 | 
			
		||||
    timer2 = threading.Timer(3.0, monster1)
 | 
			
		||||
    timer3 = threading.Timer(5.0, monster2)
 | 
			
		||||
    timer1.start()
 | 
			
		||||
    timer2.start()
 | 
			
		||||
    timer3.start()
 | 
			
		||||
else:
 | 
			
		||||
    print("    nothing happens. Maybe next time.")
 | 
			
		||||
							
								
								
									
										23
									
								
								adventure/seafloor/coral_reef/reef.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								adventure/seafloor/coral_reef/reef.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
    You are standing at the edge of a beautiful coral reef. Schools of fish are
 | 
			
		||||
    swirling around you in every direction. In front of you is a deep chasm 
 | 
			
		||||
    where you see larger fish sliding through the shadows. There is a chest 
 | 
			
		||||
    half-buried in the seafloor.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    ____...------------...____
 | 
			
		||||
               _.-"` /o/__ ____ __ __  __ \o\_`"-._
 | 
			
		||||
             .'     / /                    \ \     '.
 | 
			
		||||
             |=====/o/======================\o\=====|
 | 
			
		||||
             |____/_/________..____..________\_\____|
 | 
			
		||||
             /   _/ \_     <_o#\__/#o_>     _/ \_   \
 | 
			
		||||
             \________________\####/________________/
 | 
			
		||||
              |===\!/========================\!/===|
 | 
			
		||||
              |   |=|          .---.         |=|   |
 | 
			
		||||
              |===|o|=========/     \========|o|===|
 | 
			
		||||
              |   | |         \() ()/        | |   |
 | 
			
		||||
              |===|o|======{'-.) A (.-'}=====|o|===|
 | 
			
		||||
              | __/ \__     '-.\uuu/.-'    __/ \__ |
 | 
			
		||||
              |============= .'.'^'.'.=============|
 | 
			
		||||
              |  _\o/   __  {.' __  '.} _   _\o/  _|
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								adventure/seafloor/seafloor.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								adventure/seafloor/seafloor.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
    After several moments of peaceful floating, you make a gentle landing on 
 | 
			
		||||
    the seafloor, several hundered meters away from the sunken ship. You appear
 | 
			
		||||
    to be at the edge of a plateau whose edges are encrusted with beautiful 
 | 
			
		||||
    corals. 
 | 
			
		||||
 | 
			
		||||
    Both sunken_ship and coral_reef are directories, so use the "cd" command
 | 
			
		||||
    to go into whichever one you want.
 | 
			
		||||
							
								
								
									
										17
									
								
								adventure/seafloor/sunken_ship/galley/ghost.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								adventure/seafloor/sunken_ship/galley/ghost.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
 | 
			
		||||
# This is a Python file. You can run it by typing "python ghost.py"
 | 
			
		||||
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
if Path("key.txt").exists():
 | 
			
		||||
    print("    The ghost glances over at you. 'I hope you find some use for that key.'")
 | 
			
		||||
else:
 | 
			
		||||
    print("    You enter the cramped galley and notice a sad, lonely ghost wandering")
 | 
			
		||||
    print("    around. You always wondered if you would be afraid of ghosts, but")
 | 
			
		||||
    print("    somehow this feels completely normal. The ghost begins to speak.")
 | 
			
		||||
    print("")
 | 
			
		||||
    print("    'It has been a long while since I have seen anybody down here,' she says")
 | 
			
		||||
    print("    'I would like to give you a gift. Here's a key.'")
 | 
			
		||||
 | 
			
		||||
    with open("key.txt", "w") as keyfile:
 | 
			
		||||
        keyfile.write("    Even in the faint light of your lamp, the key has a golden gleam.\n")
 | 
			
		||||
							
								
								
									
										5
									
								
								adventure/seafloor/sunken_ship/ship.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								adventure/seafloor/sunken_ship/ship.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
    The sunken ship is lying on the seafloor at a slight angle. From the remains
 | 
			
		||||
    of its masts and rigging, you can tell it's from the age before ships were made
 | 
			
		||||
    of steel and powered by engines. You climb up in the deck, and see a large hole
 | 
			
		||||
    allowing access to the inner chambers. You flick on your suit's light and
 | 
			
		||||
    go inside. 
 | 
			
		||||
							
								
								
									
										14
									
								
								adventure/seafloor/sunken_ship/stateroom/desk.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								adventure/seafloor/sunken_ship/stateroom/desk.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
# This is a Python program. You can run it by typing "python desk.py"
 | 
			
		||||
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
print("    The stateroom contains the ruins of an elegant office. Scraps of wallpaper")
 | 
			
		||||
print("    are peeling from the wall; there is an eel living in the chandelier.")
 | 
			
		||||
print("    There is a huge desk at the center of the room.")
 | 
			
		||||
 | 
			
		||||
if Path("../galley/key.txt").exists():
 | 
			
		||||
    print("    You try your key in the desk drawer, and it clicks open. There are")
 | 
			
		||||
    print("    many decaying pieces of paper. One has the numbers 318 written in")
 | 
			
		||||
    print("    a fine script.")
 | 
			
		||||
else:
 | 
			
		||||
    print("    You try to open the desk's drawer, but it is firmly locked.")
 | 
			
		||||
							
								
								
									
										9
									
								
								adventure/sinking.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								adventure/sinking.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
    As you are lowered off the edge of the research boat, you wave goodbye to 
 | 
			
		||||
    your friends. The diving suit is tight and stiff, and your vision is limited
 | 
			
		||||
    to the round window in front of you. Your head goes below water, and the 
 | 
			
		||||
    sharp details of the boat are replaced by a wash of blues and greens. Below 
 | 
			
		||||
    you is an endless expanse of water. You can just barely see the sunken ship 
 | 
			
		||||
    on the seafloor. You relax, allowing your body to gently float down...
 | 
			
		||||
 | 
			
		||||
    To continue, you need to go into the seafloor directory by typing 
 | 
			
		||||
    "cd seafloor". Once you're there, type "ls" to see what's inside.
 | 
			
		||||
							
								
								
									
										15
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
[tool.poetry]
 | 
			
		||||
name = "lab_terminal"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
description = ""
 | 
			
		||||
authors = ["Chris Proctor <chris@chrisproctor.net>"]
 | 
			
		||||
license = "MIT"
 | 
			
		||||
 | 
			
		||||
[tool.poetry.dependencies]
 | 
			
		||||
python = "^3.11"
 | 
			
		||||
 | 
			
		||||
[tool.poetry.dev-dependencies]
 | 
			
		||||
 | 
			
		||||
[build-system]
 | 
			
		||||
requires = ["poetry-core>=1.0.0"]
 | 
			
		||||
build-backend = "poetry.core.masonry.api"
 | 
			
		||||
							
								
								
									
										62
									
								
								returnToShip.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								returnToShip.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
from pathlib  import Path
 | 
			
		||||
import shutil
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from datetime import timedelta
 | 
			
		||||
import subprocess
 | 
			
		||||
 | 
			
		||||
def reset():
 | 
			
		||||
 | 
			
		||||
    shutil.rmtree('bag')
 | 
			
		||||
    Path('adventure/seafloor/coral_reef/.timer').unlink()
 | 
			
		||||
 | 
			
		||||
    print("    You are swimming as fast as you can towards the boat but you can")
 | 
			
		||||
    print("    feel the water begin to pull you back as the sea monster opens its")
 | 
			
		||||
    print("    giant mouth.")
 | 
			
		||||
    print("    You kick with all your might, sure that you are about to breath your")
 | 
			
		||||
    print("    last breath.")
 | 
			
		||||
    print("    ")
 | 
			
		||||
    print("    ")
 | 
			
		||||
    print("    Suddenly... The treasure bag slips out of your hand!")
 | 
			
		||||
    print("    It swirls down through the water and into the mouth of the sea monster.")
 | 
			
		||||
    print("    The beast's mouth snaps closed and it jets away into the depth of the")
 | 
			
		||||
    print("    ocean, taking with it the treasure.")
 | 
			
		||||
    print("    You are safe... but will you attempt the dive again?")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def win():
 | 
			
		||||
 | 
			
		||||
    print("    You are swimming as fast as you can towards the boat but you can")
 | 
			
		||||
    print("    feel the water begin to pull you back as the sea monster opens its")
 | 
			
		||||
    print("    giant mouth.")
 | 
			
		||||
    print("    You kick with all your might, sure that you are about to breathe your")
 | 
			
		||||
    print("    last breath.")
 | 
			
		||||
    print("    ")
 | 
			
		||||
    print("    ")
 | 
			
		||||
    print("    Suddenly... A hand appears!")
 | 
			
		||||
    print("    You've made it to the boat! The crew pulls you into the boat, just in")
 | 
			
		||||
    print("    time to avoid the sea monster's vicious maw.")
 | 
			
		||||
    print("    You're safe at last!")
 | 
			
		||||
    print("    Now you can finally show off the treasure you risked your life for...")
 | 
			
		||||
    print("    Use open treasure.jpg to take a peek.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
now = datetime.now()
 | 
			
		||||
if not Path("adventure/seafloor/coral_reef/.timer").exists():
 | 
			
		||||
 | 
			
		||||
    print("    Your adventure has only just begun. You are not yet ready to return") 
 | 
			
		||||
    print("    to the ship. More secrets await you in the ocean's depths.")
 | 
			
		||||
 | 
			
		||||
else:
 | 
			
		||||
    if not Path("./bag/treasure.jpg").exists():
 | 
			
		||||
 | 
			
		||||
        print("    You forgot your treasure bag! Hurry back to get it before the sea monster")
 | 
			
		||||
        print("    hides it away forever!")
 | 
			
		||||
 | 
			
		||||
    else:
 | 
			
		||||
        with open ("adventure/seafloor/coral_reef/.timer", "r") as timerFile:
 | 
			
		||||
            timeChestOpenedAsList=timerFile.readlines()
 | 
			
		||||
        timeChestOpened = datetime.strptime(('').join(timeChestOpenedAsList), '%Y-%m-%d %H:%M:%S.%f')
 | 
			
		||||
        if timeChestOpened + timedelta(seconds=60) < now:
 | 
			
		||||
            reset()
 | 
			
		||||
        else:
 | 
			
		||||
            win()
 | 
			
		||||
		Reference in New Issue
	
	Block a user