-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Expand file tree
/
Copy pathadv.py
More file actions
115 lines (88 loc) · 3.68 KB
/
adv.py
File metadata and controls
115 lines (88 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from player import Player
from room import Room
# Declare all the rooms
room = {
'outside': Room("Outside Cave Entrance",
"North of you, the cave mount beckons"),
'foyer': Room("Foyer", """Dim light filters in from the south. Dusty
passages run north and east."""),
'overlook': Room("Grand Overlook", """A steep cliff appears before you, falling
into the darkness. Ahead to the north, a light flickers in
the distance, but there is no way across the chasm."""),
'narrow': Room("Narrow Passage", """The narrow passage bends here from west
to north. The smell of gold permeates the air."""),
'treasure': Room("Treasure Chamber", """You've found the long-lost treasure
chamber! Sadly, it has already been completely emptied by
earlier adventurers. The only exit is to the south."""),
}
# Link rooms together
room['outside'].n_to = room['foyer']
room['foyer'].s_to = room['outside']
room['foyer'].n_to = room['overlook']
room['foyer'].e_to = room['narrow']
room['overlook'].s_to = room['foyer']
room['narrow'].w_to = room['foyer']
room['narrow'].n_to = room['treasure']
room['treasure'].s_to = room['narrow']
#
# Main
#
# Make a new player object that is currently in the 'outside' room.
player = Player(room['outside'], "player one has arrived outside the room.")
def instructions():
return """
Welcome to the labyrinth dear wanderer...
* use [L] to look around
* [N,S,E,W] [North, South, East, West] [Up, Down, Right, Left] to travel in those directions
* [q] to quit
"""
def current_dirs():
currentDirs = directions()
if currentDirs.__contains__("n"):
currentDirs.extend(["north", "up", "forward", "forwards"])
if currentDirs.__contains__("s"):
currentDirs.extend(["south", "down", "backward", "backwards"])
if currentDirs.__contains__("e"):
currentDirs.extend(["east", "right"])
if currentDirs.__contains__("w"):
currentDirs.extend(["west", "left"])
return currentDirs
def directions():
directions = []
if hasattr(player.current_room, "n_to"):
directions.append("n")
if hasattr(player.current_room, "s_to"):
directions.append("s")
if hasattr(player.current_room, "e_to"):
directions.append("e")
if hasattr(player.current_room, "w_to"):
directions.append("w")
return directions
# Write a loop that:
#
# * Prints the current room name
# * Prints the current description (the textwrap module might be useful here).
# * Waits for user input and decides what to do.
def travel(input):
input = input.lower()
if input in current_dirs():
if input == "n" or input == "north" or input == "up" or input == "forward" or input == "forwards":
player.current_room = player.current_room.n_to
elif input == "s" or input == "south" or input == "down" or input == "backward" or input == "backwards":
player.current_room = player.current_room.s_to
elif input == "e" or input == "east" or input == "right":
player.current_room = player.current_room.e_to
elif input == "w" or input == "west" or input == "left":
player.current_room = player.current_room.w_to
else:
print("Wrong Way! There's nothing over there.")
def prompt(s):
# print a quicklist of commands
commands = f"(L to look around | {' | '.join(directions())} to travel | Q to quit | [Help|?] for common commands): "
prompt = f"\nWhat would you like to do, {player.name}?\n{commands}"
return input(s + prompt)
#
# If the user enters a cardinal direction, attempt to move to the room there.
# Print an error message if the movement isn't allowed.
#
# If the user enters "q", quit the game.