94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
# flags: --minimum-version=3.10
|
|
# Cases sampled from PEP 636 examples
|
|
|
|
match command.split():
|
|
case [action, obj]:
|
|
... # interpret action, obj
|
|
|
|
match command.split():
|
|
case [action]:
|
|
... # interpret single-verb action
|
|
case [action, obj]:
|
|
... # interpret action, obj
|
|
|
|
match command.split():
|
|
case ["quit"]:
|
|
print("Goodbye!")
|
|
quit_game()
|
|
case ["look"]:
|
|
current_room.describe()
|
|
case ["get", obj]:
|
|
character.get(obj, current_room)
|
|
case ["go", direction]:
|
|
current_room = current_room.neighbor(direction)
|
|
# The rest of your commands go here
|
|
|
|
match command.split():
|
|
case ["drop", *objects]:
|
|
for obj in objects:
|
|
character.drop(obj, current_room)
|
|
# The rest of your commands go here
|
|
|
|
match command.split():
|
|
case ["quit"]:
|
|
pass
|
|
case ["go", direction]:
|
|
print("Going:", direction)
|
|
case ["drop", *objects]:
|
|
print("Dropping: ", *objects)
|
|
case _:
|
|
print(f"Sorry, I couldn't understand {command!r}")
|
|
|
|
match command.split():
|
|
case ["north"] | ["go", "north"]:
|
|
current_room = current_room.neighbor("north")
|
|
case ["get", obj] | ["pick", "up", obj] | ["pick", obj, "up"]:
|
|
... # Code for picking up the given object
|
|
|
|
match command.split():
|
|
case ["go", ("north" | "south" | "east" | "west")]:
|
|
current_room = current_room.neighbor(...)
|
|
# how do I know which direction to go?
|
|
|
|
match command.split():
|
|
case ["go", ("north" | "south" | "east" | "west") as direction]:
|
|
current_room = current_room.neighbor(direction)
|
|
|
|
match command.split():
|
|
case ["go", direction] if direction in current_room.exits:
|
|
current_room = current_room.neighbor(direction)
|
|
case ["go", _]:
|
|
print("Sorry, you can't go that way")
|
|
|
|
match event.get():
|
|
case Click(position=(x, y)):
|
|
handle_click_at(x, y)
|
|
case KeyPress(key_name="Q") | Quit():
|
|
game.quit()
|
|
case KeyPress(key_name="up arrow"):
|
|
game.go_north()
|
|
case KeyPress():
|
|
pass # Ignore other keystrokes
|
|
case other_event:
|
|
raise ValueError(f"Unrecognized event: {other_event}")
|
|
|
|
match event.get():
|
|
case Click((x, y), button=Button.LEFT): # This is a left click
|
|
handle_click_at(x, y)
|
|
case Click():
|
|
pass # ignore other clicks
|
|
|
|
|
|
def where_is(point):
|
|
match point:
|
|
case Point(x=0, y=0):
|
|
print("Origin")
|
|
case Point(x=0, y=y):
|
|
print(f"Y={y}")
|
|
case Point(x=x, y=0):
|
|
print(f"X={x}")
|
|
case Point():
|
|
print("Somewhere else")
|
|
case _:
|
|
print("Not a point")
|