from agame.action import * from agame.game import * from agame.item import * from agame.room import * from agame.trigger import * # TODO - take a custom module name that has: # .database # .game # so that you can just RUN it # Something similar to wsgi using "app" in the passed module # This is the *game* here database = Database() database.add_items( Item( id="glowing_rock", name="glowing rock", desc="This rock is glowing.", synonyms=("rock",), room_desc="You see a ((glowing rock)). You have **got** to have it.", triggers={ GET: [ PrintAction( "You try to pick up the rock, but it slips out of your greasy hands.", "Maybe you should wash your hands, you disgusting little man.", ) ], LOOK: [PrintAction("Man, that rock looks awesome.")], }, ), Item( id="cell_door", name="door", room_desc="A ((door)) sits on the far wall.", triggers={ GET: [PrintAction("The door is pretty attached to its wall.")], OPEN: [ CheckVarAction( "cell_door_open", Compare.EQUALS, True, yes=[ PrintAction( "It's already open. You push on the door even //more//, just in case." ), SleepAction(1.0), PrintAction("..."), SleepAction(1.0), PrintAction("Yup, still open."), ], no=[ SetVarAction("cell_door_open", True), PrintAction("The door swings open, thanks to you."), ], ) ], CLOSE: [ CheckVarAction( "cell_door_open", Compare.EQUALS, True, yes=[ PrintAction("You close that door. Nice job."), SetVarAction("cell_door_open", False), ], no=[PrintAction("The door is already closed.")], ) ], LOOK: [ CheckVarAction( "cell_door_open", Compare.EQUALS, True, yes=[PrintAction("It's a door, wide open, because you opened it.")], no=[PrintAction("A closed door. You can change this.")], ) ], }, ), ) database.add_rooms( Room( id="start", name="Test room", desc="You're in ((Todd's Test Cell)).", items=[ database.items["glowing_rock"].create_inst(), database.items["cell_door"].create_inst(), ], ), ) # Build the game state game = Game( database=database, room=database.rooms["start"], vars={ "cell_door_open": False, }, ) game.print_room() while True: try: game.say() line = input("> ") game.say() game.run_command(line) except (KeyboardInterrupt, EOFError): game.say() game.say("Bye.") break