You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
import json |
|
|
|
from rich import print |
|
|
|
# dictionary of the rooms |
|
with open("zork1.rooms.json") as fp: |
|
rooms = {room["Name"]: room for room in json.load(fp)} |
|
|
|
# game starts here |
|
current_room = rooms["WEST-OF-HOUSE"] |
|
|
|
while True: |
|
# game loop |
|
print("") |
|
print( |
|
"[bold magenta]" |
|
+ "".join(current_room["Properties"]["DESC"]) |
|
+ "[/bold magenta]" |
|
) |
|
current_room_props = current_room["Properties"] |
|
print("".join(current_room_props.get("LDESC", ""))) |
|
print(", ".join(current_room["Exits"].keys())) |
|
|
|
while True: |
|
# user input |
|
direction = input("Enter direction (see above): ").upper().strip() |
|
if direction in current_room["Exits"]: |
|
# NEXIT, UEXIT, CEXIT, BREXIT |
|
exit = current_room["Exits"][direction] |
|
exit_type = exit["TYPE"] |
|
if exit_type == "NEXIT": |
|
print(exit["MESSAGE"]) |
|
elif exit_type in ["UEXIT", "CEXIT", "DEXIT"]: |
|
current_room = rooms[current_room["Exits"][direction]["TO"]] |
|
break |
|
else: |
|
print("You can't do that!\n")
|
|
|