def prompt(self): action_string = raw_input("What do you want to do?\n") action_list = "take it".split() teapot = models.Item("teapot", "some teapot", adv, None, get_resource_path("teapot.png"), (15, 30), get_resource_path("teapot.png")) getattr(Element, "take")(teapot)
def main(): # on initialise le jeu point and click pac_game = geta.state.game.GameApp((640, 400), title="DEMO game for pace") # on construit l'adventure state avec des salles et des objets adv = pac_game.manager.states['adventure'] adv.set_descriptions_from_file(get_resource_path("descriptions.txt")) bsod = geta.model.models.Area('bsod', "blue screen of death", get_resource_path("background.png")) adv.add_area(bsod) drowning = geta.model.models.Area('drowning', "the drowning 'room'", get_resource_path("drowning.png")) adv.add_area(drowning) # # room 1 # room1 = models.Area('room1', "first room", adv, get_resource_path("thegoonies_room.png")) # adv.add_area(room1) # door1 = models.Gate("door1", "some door", adv, room1, "room2", get_resource_path("door.png"), (352, 142)) # teapot = models.Item("teapot", None, adv, None, get_resource_path("teapot.png"), (8, 8), get_resource_path("teapot.png")) # key = models.Item("key", None, adv, room1, get_resource_path("key.png"), (380, 220), get_resource_path("key.png")) # # # room 2 # room2 = models.Area('room2', "another room", adv, get_resource_path("thegoonies_room.png")) # adv.add_area(room2) # door2 = models.Gate("door2", "another porte", adv, room2, "drowning", get_resource_path("door.png"), (382, 142)) # locker = models.Container("locker", None, adv, room2, get_resource_path("closed_locker.png"), (325, 150), None, open_state=False, key_name='key', area_open_image_path=get_resource_path("open_locker.png")) # locker.acquire_element(teapot) # # # on ajoute des éléments dans la mock area teapot = geta.model.models.Item("teapot", None, adv, get_resource_path("teapot.png"), get_resource_path("teapot.png")) bsod.acquire_element(teapot, position=(15, 30)) # locker = models.Item("locker", None, adv, get_resource_path("closed_locker.png"), None) # locker.open = False locker = geta.model.models.Container("locker", None, adv, get_resource_path("closed_locker.png"), None, get_resource_path("open_locker.png"), key_name='key') bsod.add_item(locker, position=(80, 60)) key = geta.model.models.Item("key", None, adv, get_resource_path("key.png"), get_resource_path("key.png")) bsod.add_item(key, position=(180, 60)) # on change le comportement par défaut du locker def cannot_take(item, state): print "I cannot take " + str(item) + "!" return True geta.helper.setter.set_behaviour(locker, "take", cannot_take) # use key behaviour # note that, Q5-like, we can directly use the key in the room with the locker without taking it # then the key will remain in the room...! def use_key(key, state): state.complement = "key" return False geta.helper.setter.set_behaviour(key, "use", use_key) # porte "à la main" # door = models.Clickable("door", "porte", get_resource_path("door.png"), (200,20)) door = geta.model.models.Gate(drowning, "door", "porte", get_resource_path("door.png"), (200, 20)) # bsod.add_acitem(door, door.rect.topleft) bsod.add_gate(door) # set_behaviour(door, "on_click", lambda self, state: state.enter_area("drowning")) # on construit des boutons button1 = geta.model.models.InteractiveButton("take", "Prendre", get_resource_path("take.png"), (0, 0)) button2 = geta.model.models.InteractiveButton("use", "Utiliser", get_resource_path("use.png"), (100, 0)) button3 = geta.model.models.InteractiveButton("open", "Ouvrir", get_resource_path("open.png"), (200, 0)) # on les attache à un menu créé à ce moment (ou bien l'avance puis on append/add les boutons, évite les keyword avant args) menu = geta.model.models.InteractiveMenu(get_resource_path("menu.png"), (40, 340, 160, 60), 1, True, button1, button2, button3) adv.set_menu(menu) # on peut entrer dans l'area qui est ready adv.enter_area('bsod') # on peut entrer dans le state qui est ready pac_game.context.enter_state("adventure") assert pac_game.context.states['adventure'].area.codename == 'bsod' # on peut lancer le jeu pac_game.run()
def main(): # on initialise le jeu point and click pac_game = pace.state.game.GameApp((640, 400), title="DEMO game for pace") print pac_game.manager # on construit l'adventure state avec des salles et des objets adv = pac_game.manager.states['adventure'] adv.set_descriptions_from_file(get_resource_path("descriptions.txt")) bsod = models.Area('bsod', "blue screen of death", get_resource_path("background.png")) adv.add_area(bsod) drowning = models.Area('drowning', "the drowning 'room'", get_resource_path("drowning.png")) adv.add_area(drowning) print bsod # on ajoute des éléments dans la mock area teapot = models.Item("teapot", None, adv, get_resource_path("teapot.png"), get_resource_path("teapot.png")) bsod.add_item(teapot, position=(15, 30)) # locker = models.Item("locker", None, adv, get_resource_path("closed_locker.png"), None) # locker.open = False locker = models.Container("locker", None, adv, get_resource_path("closed_locker.png"), None, get_resource_path("open_locker.png"), key_name='key') bsod.add_item(locker, position=(80, 60)) key = models.Item("key", None, adv, get_resource_path("key.png"), get_resource_path("key.png")) bsod.add_item(key, position=(180, 60)) # on change le comportement par défaut du locker def cannot_take(item, state): print "I cannot take " + str(item) + "!" return True set_behaviour(locker, "take", cannot_take) # use key behaviour # note that, Q5-like, we can directly use the key in the room with the locker without taking it # then the key will remain in the room...! def use_key(key, state): state.complement = "key" return False set_behaviour(key, "use", use_key) # porte "à la main" # door = models.Clickable("door", "porte", get_resource_path("door.png"), (200,20)) door = models.Gate(drowning, "door", "porte", get_resource_path("door.png"), (200, 20)) # bsod.add_acitem(door, door.rect.topleft) bsod.add_gate(door) # set_behaviour(door, "on_click", lambda self, state: state.enter_area("drowning")) # on construit des boutons button1 = models.InteractiveButton("take", "Prendre", get_resource_path("take.png"), (0, 0)) button2 = models.InteractiveButton("use", "Utiliser", get_resource_path("use.png"), (100, 0)) button3 = models.InteractiveButton("open", "Ouvrir", get_resource_path("open.png"), (200, 0)) # on les attache à un menu créé à ce moment (ou bien l'avance puis on append/add les boutons, évite les keyword avant args) menu = models.InteractiveMenu(get_resource_path("menu.png"), (40, 340, 160, 60), 1, True, button1, button2, button3) adv.set_menu(menu) # on peut entrer dans l'area qui est ready adv.enter_area('bsod') # on peut entrer dans le state qui est ready pac_game.manager.enter_state("adventure") assert pac_game.manager.states['adventure'].area.codename == 'bsod' # on peut lancer le jeu pac_game.run()
def main(): """Exemple de jeu avec manu dynamique style Monkey Island 3""" # on initialise le jeu point and click pac_game = pace.state.game.PaCGame((640, 400), title="DEMO game for pace") # on construit l'adventure state avec des salles et des objets adv = pac_game.context.states['adventure'] adv.set_descriptions_from_file(get_resource_path("descriptions.txt")) bsod = models.Area('bsod', "blue screen of death", get_resource_path("background.png")) adv.add_area(bsod) drowning = models.Area('drowning', "the drowning 'room'", get_resource_path("drowning.png")) adv.add_area(drowning) # on ajoute des éléments dans la mock area teapot = models.Item("teapot", None, adv, get_resource_path("teapot.png"), get_resource_path("teapot.png")) bsod.add_item(teapot, position=(15, 30)) # locker = models.Item("locker", None, adv, get_resource_path("closed_locker.png"), None) # locker.open = False # locker = models.Container("locker", None, adv, get_resource_path("closed_locker.png"), None, get_resource_path("open_locker.png"), key_name='key') locker = models.Container("locker", None, adv, get_resource_path("closed_locker.png"), None, get_resource_path("open_locker.png"), key_name='key') bsod.add_item(locker, position=(80, 60)) key = models.Item("key", None, adv, get_resource_path("key.png"), get_resource_path("key.png")) bsod.add_item(key, position=(180, 60)) # on change le comportement par défaut du locker def cannot_take(item, state): print "I cannot take " + str(item) + "!" return True set_behaviour(locker, "take", cannot_take) # use key behaviour # note that, Q5-like, we can directly use the key in the room with the locker without taking it # then the key will remain in the room...! def use_key(key, state): state.complement = "key" return False set_behaviour(key, "use", use_key) # porte "à la main" # door = models.Clickable("door", "porte", get_resource_path("door.png"), (200,20)) door = models.Gate(drowning, "door", "porte", get_resource_path("door.png"), (200, 20)) # bsod.add_acitem(door, door.rect.topleft) bsod.add_gate(door) # set_behaviour(door, "on_click", lambda self, state: state.enter_area("drowning")) # on construit des boutons button1 = models.InteractiveButton("take", "Prendre", get_resource_path("take.png"), (0, 0)) button2 = models.InteractiveButton("use", "Utiliser", get_resource_path("use.png"), (100, 0)) # button3 = models.InteractiveButton("open", "Ouvrir", get_resource_path("open.png"), (200, 0)) button3 = models.InteractiveButton("open", "Ouvrir", get_resource_path("open.png"), (200, 0)) # on les attache à un menu créé à ce moment (ou bien l'avance puis on append/add les boutons, évite les keyword avant args) dynamic_menu = models.InteractiveMenu(get_resource_path("menu.png"), (40, 340, 160, 60), 0, True, button1, button2, button3) adv.set_menu(dynamic_menu) adv.set_query_mode() # # change behaviour of button open: keeps complement # def query_button_on_click(self, adventurestate): # adventurestate.display_menu_for(self) # set_behaviour(locker, "query", query_button_on_click) # # change behaviour of open button: used after complement has been chosen # def open_after_complement(self, adventurestate): # adventurestate.verb = 'open' # opt. ici mais pratique en mouse-over pour voir ce qu'on fait # # direct link to item with a method 'get_by_name'? but this ensures the item is in the current area... # if getattr(adventurestate.area.get_item_by_name(adventurestate.complement), adventurestate.verb)(adventurestate): # # if True is returned, the action has been completed # del adventurestate.verb # del adventurestate.complement # set_behaviour(button3, "on_click", open_after_complement) # on peut entrer dans l'area qui est ready adv.enter_area('bsod') # on peut entrer dans le state qui est ready pac_game.context.enter_state("adventure") assert pac_game.context.states['adventure'].area.codename == 'bsod' # on peut lancer le jeu pac_game.run()
def main(): # on initialise le jeu point and click game_app = GameApp((640, 400), title="DEMO game for GETA") # on construit l'adventure state avec des salles et des objets adv = game_app.manager.states['adventure'] adv.set_descriptions_from_file(get_resource_path("descriptions.txt")) # room 1 room1 = models.Area('room1', "first room", adv, get_resource_path("thegoonies_room.png")) adv.add_area(room1) door1 = models.Gate("door1", "some door", adv, room1, "room2", get_resource_path("door.png"), (352, 142)) teapot = models.Item("teapot", None, adv, None, get_resource_path("teapot.png"), (8, 8), get_resource_path("teapot.png")) key = models.Item("key", None, adv, room1, get_resource_path("key.png"), (380, 220), get_resource_path("key.png")) # room 2 room2 = models.Area('room2', "another room", adv, get_resource_path("thegoonies_room.png")) adv.add_area(room2) door2 = models.Gate("door2", "another porte", adv, room2, "drowning", get_resource_path("door.png"), (382, 142)) locker = models.Container( "locker", None, adv, room2, get_resource_path("closed_locker.png"), (325, 150), None, open_state=False, key_name='key', area_open_image_path=get_resource_path("open_locker.png")) locker.acquire_element(teapot) print "!!! " + teapot.parent.codename def use_locker(self, state): if state.complement is None: state.display_description("I cannot use this item alone.") else: self._use_tool_with(state, state.complement) return True # action terminée setter.set_behaviour(locker, "use", use_locker) # drowning room drowning = models.Area('drowning', "the drowning 'room'", adv, get_resource_path("drowning.png")) adv.add_area(drowning) # on construit des boutons button0 = models.VerbButton("look_at", "look at", adv, get_resource_path("small_hit.png"), (38, 38)) button1 = models.VerbButton("hit", "hit", adv, get_resource_path("small_hit.png"), (38, 70)) button2 = models.VerbButton("take", "take", adv, get_resource_path("small_take.png"), (38, 102)) button3 = models.VerbButton("use", "use", adv, get_resource_path("small_use.png"), (38, 134)) button4 = models.VerbButton("close", "close", adv, get_resource_path("small_close.png"), (38, 166)) # on les attache à un menu créé à ce moment menu = models.AdventureMenu("menu", "Menu statique des verbes d'action", adv, get_resource_path("thegoonies_menu.png"), (102, 20), True, button1, button2, button3, button4) adv.set_menu(menu) # déplacer l'inventaire là où l'on veut adv.set_inventory_view( position=(246, 292), image_path=get_resource_path("thegoonies_inventory.png")) # déplacer les actions et descriptions là on l'on veut adv.set_action_label((10, 230), get_resource_path("blank.png")) adv.move_description_label_to((270, 350)) # on peut entrer dans l'area qui est prête adv.enter_area('room1') # on peut entrer dans le state qui est prêt game_app.manager.enter_state("adventure") # on peut lancer le jeu game_app.run()
def main(): # on initialise le jeu point and click game_app = GameApp((640, 400), title="DEMO game for GETA") # on construit l'adventure state avec des salles et des objets adv = game_app.manager.states['adventure'] adv.set_descriptions_from_file(get_resource_path("descriptions.txt")) # room 1 room1 = models.Area('room1', "first room", adv, get_resource_path("thegoonies_room.png")) adv.add_area(room1) door1 = models.Gate("door1", "some door", adv, room1, "room2", get_resource_path("door.png"), (352, 142)) teapot = models.Item("teapot", None, adv, None, get_resource_path("teapot.png"), (8, 8), get_resource_path("teapot.png")) key = models.Item("key", None, adv, room1, get_resource_path("key.png"), (380, 220), get_resource_path("key.png")) # room 2 room2 = models.Area('room2', "another room", adv, get_resource_path("thegoonies_room.png")) adv.add_area(room2) door2 = models.Gate("door2", "another porte", adv, room2, "drowning", get_resource_path("door.png"), (382, 142)) locker = models.Container("locker", None, adv, room2, get_resource_path("closed_locker.png"), (325, 150), None, open_state=False, key_name='key', area_open_image_path=get_resource_path("open_locker.png")) locker.acquire_element(teapot) print "!!! " + teapot.parent.codename def use_locker(self, state): if state.complement is None: state.display_description("I cannot use this item alone.") else: self._use_tool_with(state, state.complement) return True # action terminée setter.set_behaviour(locker, "use", use_locker) # drowning room drowning = models.Area('drowning', "the drowning 'room'", adv, get_resource_path("drowning.png")) adv.add_area(drowning) # on construit des boutons button0 = models.VerbButton("look_at", "look at", adv, get_resource_path("small_hit.png"), (38, 38)) button1 = models.VerbButton("hit", "hit", adv, get_resource_path("small_hit.png"), (38, 70)) button2 = models.VerbButton("take", "take", adv, get_resource_path("small_take.png"), (38, 102)) button3 = models.VerbButton("use", "use", adv, get_resource_path("small_use.png"), (38, 134)) button4 = models.VerbButton("close", "close", adv, get_resource_path("small_close.png"), (38, 166)) # on les attache à un menu créé à ce moment menu = models.AdventureMenu("menu", "Menu statique des verbes d'action", adv, get_resource_path("thegoonies_menu.png"), (102, 20), True, button1, button2, button3, button4) adv.set_menu(menu) # déplacer l'inventaire là où l'on veut adv.set_inventory_view(position=(246, 292), image_path=get_resource_path("thegoonies_inventory.png")) # déplacer les actions et descriptions là on l'on veut adv.set_action_label((10, 230), get_resource_path("blank.png")) adv.move_description_label_to((270, 350)) # on peut entrer dans l'area qui est prête adv.enter_area('room1') # on peut entrer dans le state qui est prêt game_app.manager.enter_state("adventure") # on peut lancer le jeu game_app.run()