def drop(thing): obj = inventory.take(thing) if not obj: a.say('You do not have a %s.' % thing) else: a.say('You drop the %s.' % obj) current_room.items.add(obj)
def go(direction): global current_room room = current_room.exit(direction) if room: current_room = room a.say('You go %s.' % direction) look() if room == magic_forest: a.set_context('magic_aura') else: a.set_context('default')
def talk(thing): if thing == "to" or thing == None: a.say("You talk a bit to yourself") return # check if the thing is in the inventory or in the current room # inventory and room.items are SET's. to merge them, I use pythons join command for i in inventory.union(current_room.items): if thing in i.aliases: exist = True break else: # else in a for loop means the whole loop was interrated trough, without any break a.say("there is no {} to talk to, neither in your inventory nor in this room/location".format(thing)) return # the thing exist. thing is a string, i is the object a.say("you talk to {}...".format(thing)) # check if object i (the item) has the .answers attribute if "answers" in i.__dict__.keys(): a.say("and the {} says: '{}'".format(thing, random.choice(i.answers))) else: a.say("but you get no reply. None at all. It seems that the {} is unable to talk".format(thing))
def cast(magic): if magic == None: a.say("Which magic you would like to spell?") elif magic == "fireball": a.say("you cast a flaming Fireball! Woooosh....") else: a.say("you cast {}".format(magic))
def take(item): if item == "wizard": a.say("The wizard does not want to be picked up by you") return obj = current_room.items.take(item) if obj: a.say('You pick up the %s.' % obj) inventory.add(obj) else: a.say('There is no %s here.' % item)
def show_inventory(): a.say('You have:') for thing in inventory: a.say(thing)
def look(): a.say(current_room) #a.say("image: {}".format(current_room.image)) if current_room.items: for i in current_room.items: a.say('A %s is here.' % i)
[sg.Output(key="output", visible=True, size=(70,2)),sg.Col(key="gui", layout=sidescreen, visible=False)], [sg.Col(key="inputline", visible=False, layout=[ [sg.InputText(key="command", size=(50, 1), do_not_clear=False), sg.Button("execute", bind_return_key=True, size=(10,1))]])], [sg.Button("Start"), sg.Button("Cancel"), sg.Button("test")], ] window = sg.Window(title="Adventuregame", layout=layout) while True: event, values = window.read() if event in [None, "Cancel"]: break if event == "Start": window["header"].update("Game is running") a.say("starting a new adventure") #a.start() look() #window["output"].update(size=(70,15)) window["gui"].update(visible=True) #window["command"].update(visible=True) #window["execute"].update(visible=True) window["inputline"].update(visible=True) window["Start"].update(visible=False) if event == "execute": a.say(">>> "+ values["command"].strip()) a._handle_command(values["command"].strip()) if event == "test": ugly = a._available_commands() print(ugly) #for t in ugly: