def __init__(self, window_width, window_height, level_name): self.level_name = level_name self.map_controller = Map(self.level_name) self.character = Character()
def __init__(self): GameScreen.__init__(self) self.btnContinue.hide() self.mainChar = Character(self.frmContent.getCanvas(), (0,0,0), "mainChar", "mike") self.mainChar.animate("idle", "l", 3) self.mainChar.btn.reparentTo(self.frmContent.getCanvas(), 100) self.chapter = None self.inventory = Inventory(self.frmInventory) self.accept("quitGame", self.askQuit) self.accept("toggleAudio", self.toggleAudio) self.accept("switchToChapter", self.switchToChapter) self.accept("showText", self.showText) self.accept("showNote", self.showNote) self.accept("addInventory", self.addInventory) self.accept("getInventory", self.getInventory) self.accept("moveChar", self.mainChar.moveTo) self.accept("stopChar", self.mainChar.stop) self.accept("animateChar", self.mainChar.animate) if base.AppHasAudioFocus: self.btnAudioToggle["text"] = "Audio On" else: self.btnAudioToggle["text"] = "Audio Off" self.chapter = levelTree["chapter1"](self.frmContent.getCanvas()) self.mainChar.btn.setPos(self.chapter.startPos) LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,0)).start()
class Chapter4B(ChapterBase): def __init__(self, rootParent): ChapterBase.__init__(self, "chapter4/office.png", rootParent) self.overlay = Overlay(rootParent) self.overlay.newspaper["image"] = "chapter4/newspaperB.png" self.startPos = (0.5, 0, -0.3) base.messenger.send("animateChar", ["idle", "l", 3, True]) self.accept("continue", self.readNewspaper) base.messenger.send("showText", [FINAL.copy()]) self.alica = Character(rootParent, (0.3, 0, -0.3), "alica", "alica") self.alica.animate("idle", "r", 3) self.accept("mike", self.talkMike) def destroy(self): self.overlay.destroy() self.alica.destroy() ChapterBase.destroy(self) def readNewspaper(self): self.overlay.newspaper.hide() self.accept("alica", self.talkAlica) def talkAlica(self): self.accept("continue", base.messenger.send, extraArgs=["switchToChapter", ["chapterEndB"]]) base.messenger.send("showText", [FINAL_ALICA.copy()]) def talkMike(self): base.messenger.send("showNote", ["Ms Alica is here, I should talk with her."])
def __init__(self, lvl): if lvl == 1: Character.__init__(self, 5, 2, 2, 1) self.goblinSwipe() else: raise Exception("Fail to create Goblin!") quit()
def __init__(self, interface, socket_to_server): self.character = Character(interface, socket_to_server) self.interface = interface self.socket_to_server = socket_to_server self.interface.set_character(self.character) self.map_frame = MapFrame(interface, self.character) self.combat = Combat(self.map_frame) self.script = Script(self.character)
def __init__(self, lvl): if lvl == 1: Character.__init__(self, 7, 5, 3, 2) self.warriorCleave() self.warriorPotion() else: raise Exception("Fail to create Warrior!") quit()
def __init__(self, lvl): if lvl == 1: Character.__init__(self, 7, 3, 6, 3) self.rogueStab() self.roguePotion() else: raise Exception("Fail to create Warrior!") quit()
def __init__(self): self.level = GraphicLevel(Constant.constant['level']) self.window_side = \ Constant.constant['sprite_number'] \ * Constant.constant['sprite_size'] self.player = Character(Constant.constant['player'], self.level) self.window = pygame.display.set_mode( (self.window_side, self.window_side))
def __init__(self, rootParent): self.screen = EndScreen(rootParent) self.screen.lblEnding["text"] = "You've found ending 2/2" self.startPos = (0.1, 0, -.3) base.messenger.send("animateChar", ["idle", "l", 3, True]) self.alica = Character(rootParent, (-0.1, 0, -.3), "alica", "alica") self.alica.animate("idle", "r", 3) self.accept("alica", self.talkAlica) self.accept("mike", self.talkMike)
class Alpha: def __init__(self, window_width, window_height, level_name): self.level_name = level_name self.character = Character() def draw(self, window): window.fill((125, 125, 125)) self.character.draw(window) def game_loop(self, key, mouse): self.character.game_loop(key, mouse)
def __init__(self, rootParent): ChapterBase.__init__(self, "chapter4/office.png", rootParent) self.overlay = Overlay(rootParent) self.overlay.newspaper["image"] = "chapter4/newspaperB.png" self.startPos = (0.5, 0, -0.3) base.messenger.send("animateChar", ["idle", "l", 3, True]) self.accept("continue", self.readNewspaper) base.messenger.send("showText", [FINAL.copy()]) self.alica = Character(rootParent, (0.3, 0, -0.3), "alica", "alica") self.alica.animate("idle", "r", 3) self.accept("mike", self.talkMike)
def __init__(self, rootParent): ChapterBase.__init__(self, "chapter3/hotel.png", rootParent) self.startPos = (-0.7, 0, -0.3) self.talkedBadGuy1 = False self.talkedBadGuy2 = False self.hasFakeIDs = False self.shownFakeID = False base.messenger.send("animateChar", ["idle", "r", 3, True]) self.overlay = Overlay(rootParent) self.alica = Character(rootParent, (0.5, 0, -0.3), "alica", "alica") self.alica.animate("lie", "l", 3) self.badGuy1 = Character(rootParent, (-0.2, 0, -0.3), "badGuy1", "badGuy1") self.badGuy1.animate("idle", "l", 3) self.badGuy2 = Character(rootParent, (0.4, 0, -0.3), "badGuy2", "badGuy2") self.badGuy2.animate("idle", "l", 3) self.accept("badGuy1", self.talkBadGuy1) self.accept("badGuy2", self.talkBadGuy2) self.accept("alica", self.talkAlica) self.accept("mike", self.talkMike) self.accept("inventory_fakeID", self.showFakeID) self.accept("inventoryRequest", self.inventoryCheck) base.messenger.send("getInventory")
class ChapterEndB(DirectObject): def __init__(self, rootParent): self.screen = EndScreen(rootParent) self.screen.lblEnding["text"] = "You've found ending 2/2" self.startPos = (0.1, 0, -.3) base.messenger.send("animateChar", ["idle", "l", 3, True]) self.alica = Character(rootParent, (-0.1, 0, -.3), "alica", "alica") self.alica.animate("idle", "r", 3) self.accept("alica", self.talkAlica) self.accept("mike", self.talkMike) def destroy(self): self.alica.destroy() self.screen.destroy() def talkAlica(self): base.messenger.send("showNote", ["Thanks for playing!"]) def talkMike(self): base.messenger.send("showNote", ["Good job!"])
class ConsoleMode(Constant): """ Main class for console mode game """ def __init__(self): Constant.__init__(self) self.level = Level(Constant.constant['level']) self.player = Character(Constant.constant['player'], self.level) def play(self): """ method used to launch console game """ progress = True self.level.generate() x_hero, y_hero = self.level.position( self.level.structure, Constant.constant['player']) while progress: print('Item : {}'.format(self.player.get_item_count())) for elt in self.level.structure: print("".join(elt)) direction = input('Choose a direction: ') if direction == 'd': self.check_victory(x_hero, y_hero + 1) if self.player.move(x_hero, y_hero, 'right'): y_hero += 1 elif direction == 'q': self.check_victory(x_hero, y_hero - 1) if self.player.move(x_hero, y_hero, 'left'): y_hero -= 1 elif direction == 's': self.check_victory(x_hero + 1, y_hero) if self.player.move(x_hero, y_hero, 'down'): x_hero += 1 elif direction == 'z': self.check_victory(x_hero - 1, y_hero) if self.player.move(x_hero, y_hero, 'up'): x_hero -= 1 def check_victory(self, x_hero, y_hero): """ this method will check, at every moves, if the player is in front of the boss and if he has all requirement to win or not """ if self.level.is_final_boss(x_hero, y_hero): if self.player.has_all_items(): print('You win... but what did you expect? ' 'you\'re Macgyver !') exit() else: print('You\'re dead !!') exit()
def effect(trigger, effect, flags): if trigger == {} or (trigger["type"] == "flag" and trigger["flag"] in flags): if effect["type"] == "stat": if effect["result"] == "+1": player.stat_up(effect["stat"]) print effect["description"] raw_input() print "Your " + effect["stat"].upper() + " has increased." elif effect["result"] == "+2": player.stat_way_up(effect["stat"]) print effect["description"] raw_input() print "Your " + effect["stat"].upper() + " has greatly increased." elif effect["type"] == "character": character = Character(effect["character"].lower()) character.read_in() if effect["result"] == "+1": character.friendship_up() elif effect["result"] == "+2": character.friendship_way_up() print effect["description"] + " (friendship " + effect["result"] + ")" raw_input()
from dialogue.dialogue import Dialogue from character.character import Character boss = Character('boss') boss.write_out() Dialogue('boss', '001')
def __init__(self, window_width, window_height, level_name): self.level_name = level_name self.character = Character()
from character.character import Character from item import items from item.armor import Armor from item.weapon import Weapon if __name__ == "__main__": # Thorbjorn thorbjorn = Character("Thorbjorn", 2, 2, -1) thorbjorn.printStats() xavier = Character("Xavier", 2, 1, 1) xavier.printStats() thorbjorn.attack(items.LEVEL3_DAGGER, xavier)
def instantiate_characters(self): with open(resource_filename(self.__module__, '../story/characters/characters.json'), 'r') as f: characters_data = json.loads(f.read()) for character in characters_data["list"]: Character(character).write_out()
from character.effect import Effect import os dg = DungeonGenerator(10,64) dungeon = dg.generate() decorator = DungeonDecorator() pc = decorator.decorate(dungeon) controller = Controller( pc ) selection = controller._selection dungeonmaster = DungeonMaster(dungeon) b = Character("Hardeep", "/home/lorin/projects/ge/art/planetcute/Character Boy.png", None, []) def drw(): pcloc= dungeon.loc( pc ) dungeonmaster.update() dungeon.draw( pcloc ) selection.draw() pos = actor.Vertex() def drwsel(): pcloc = dungeon.loc( pc ) dungeon.draw( pcloc, True ) def keypress( event ): result = controller.interpret( event, dungeon ) dungeonmaster.turn() print result
class Gestion_Packet(): def __init__(self): self.interface = Interface() self.map = None self.entitie = [] self.map_frame = None def gestion_server(self, packet): self.entitie_remove = [] #print("Server:" + packet) self.interface.print_richTextBox1("Server:" + packet) #character information if packet[:3] == "ASK": info_perso = packet[3:].split("|") self.character = Character(id_=info_perso[1], pseudo=info_perso[2], lvl=info_perso[3], id_class=info_perso[4], sexe=info_perso[5], gfx=info_perso[6]) self.interface.create_charater(self.character.gfx, self.character.pseudo, self.character.id_, self.character.lvl) #spell (lvl,available spell...) elif packet[:2] == "SL": spells_data = packet[2:].split(";") self.spells = Spells(self.interface, spells_data) #character stats (all stats pa, pm, res fix, rex....) elif packet[:2] == "As": self.character.character_stats(packet[2:].split("|")) self.interface.base_start(self.character) self.interface.create_label_caracteristique(self.character) #map information (mapid, date of creation,key) elif packet[:3] == "GDM": data = packet.split("|") self.mapID = data[1] self.map_date = data[2] self.decryption_key = data[3] self.entitie = [] self.map = Map(self.mapID, self.map_date, self.decryption_key) self.interface.update_map(self.map) #character pods elif packet[:2] == "Ow": data = packet[2:].split("|") pods_actu = data[0] pods_max = data[1] #entity map information elif packet[:2] == "GM": #print(packet) self.map_frame = Map_Frame(packet, self.map, self.entitie, self.character.id_) self.entitie = self.map_frame.entities self.entitie_remove = self.map_frame.entities_remove #Enlever les try:exp... probleme avec les entities reglée self.interface.update_entity(self.entitie, self.entitie_remove) elif packet[:2] == "GA": print(packet) if packet != "GA;0" and packet[:3] != "GAS" and packet[:3] != "GAF": data = packet[2:].split(";") action_id = int(data[1]) entity_id = int(data[2]) #Travel on the map if action_id == 1: cell = hash.get_Cell_Id_From_Hash(data[3][len(data[3]) - 2:]) for i in range(len(self.entitie)): if entity_id == self.entitie[i].id: self.entitie_remove.append(copy(self.entitie[i])) self.entitie[i].cell = cell if self.map_frame != None: self.map_frame.update_entity(self.entitie, self.entitie_remove) self.entitie = self.map_frame.entities self.entitie_remove = self.map_frame.entities_remove self.interface.update_entity(self.entitie, self.entitie_remove) #Le personnage recolte elif action_id == 501: harvest_time = int(data[3].split(",")[1]) / 1000 cell_id = data[3].split(",")[0] type_of_harvest = data[0] print( f"Le personnage recolte un resource sur la cellid {cell_id} temps d'attente {str(harvest_time)} s \n(type de resource = {type_of_harvest})" ) elif packet[:3] == "GDF": cells_id = self.map_frame.update_interactive(packet) self.interface.update_resource(cells_id) return packet def gestion_client(self, packet): #print("Client: "+packet) self.interface.print_richTextBox1("Client:" + packet) return packet
def decorate(self,dungeon): """ """ from character.character import Character # from character.controller import Controller from gitem.gitem import Gitem,GitemFactory self.__placewalls__(dungeon) sg = SkillFactory() skillslash = sg.makeskill( 'slash' ) gitemFac = GitemFactory() image_pc = "/home/lorin/projects/ge/art/planetcute/Character Horn Girl.png" pc = Character("Angelina", image_pc, dungeon, [], 1) pc.width = 0 knife = gitemFac.makegitem() pc.mind._disabled = True pc.skillbook.learn( skillslash ) pc.setskill( slot='SLOT_1', skill=skillslash.name ) image_mob = "/home/lorin/projects/ge/art/planetcute/Enemy Bug.png" mob = Character("Goblin", image_mob, dungeon,[],-1) mob.health = 25 image_mob2 = "/home/lorin/projects/ge/art/planetcute/Character Boy.png" mob2 = Character("Boy", image_mob2, dungeon,[],-1) mob2.health = 50 dungeon.place( pc, (5, 0) ) dungeon.place( mob, (5,15) ) dungeon.place( mob2, (5, 25) ) # image_mob = "/home/lorin/projects/ge/art/planetcute/Character Horn Girl.png" # mob = Character("badgirl", image_mob, dungeon) # mob.health = 25 # dungeon.place( mob, (5,25) ) # image_mob = "/home/lorin/projects/ge/art/planetcute/Character Boy.png" # mob = Character("badboy", image_mob, dungeon) # mob.health = 25 # dungeon.place( mob, (5,35) ) #give each character a weapon knife = gitemFac.makegitem() pc.weapon = knife knife = gitemFac.makegitem() mob.weapon = knife return pc
class Chapter3(ChapterBase): def __init__(self, rootParent): ChapterBase.__init__(self, "chapter3/hotel.png", rootParent) self.startPos = (-0.7, 0, -0.3) self.talkedBadGuy1 = False self.talkedBadGuy2 = False self.hasFakeIDs = False self.shownFakeID = False base.messenger.send("animateChar", ["idle", "r", 3, True]) self.overlay = Overlay(rootParent) self.alica = Character(rootParent, (0.5, 0, -0.3), "alica", "alica") self.alica.animate("lie", "l", 3) self.badGuy1 = Character(rootParent, (-0.2, 0, -0.3), "badGuy1", "badGuy1") self.badGuy1.animate("idle", "l", 3) self.badGuy2 = Character(rootParent, (0.4, 0, -0.3), "badGuy2", "badGuy2") self.badGuy2.animate("idle", "l", 3) self.accept("badGuy1", self.talkBadGuy1) self.accept("badGuy2", self.talkBadGuy2) self.accept("alica", self.talkAlica) self.accept("mike", self.talkMike) self.accept("inventory_fakeID", self.showFakeID) self.accept("inventoryRequest", self.inventoryCheck) base.messenger.send("getInventory") def destroy(self): self.overlay.destroy() self.alica.destroy() self.badGuy1.destroy() self.badGuy2.destroy() ChapterBase.destroy(self) def inventoryCheck(self, inventory): for i in inventory: if i.key == "fakeID": self.hasFakeIDs = True def talkMike(self): if not self.talkedBadGuy1: base.messenger.send("showNote", ["Let's talk with that guy in front of me."]) elif not self.shownFakeID: base.messenger.send( "showNote", ["Now's the time to select the Fake IDs from my inventory"]) elif not self.talkedBadGuy2: base.messenger.send("showNote", [ "That guy is letting me pass, I should speakk with that other one in the next room" ]) else: base.messenger.send("showNote", ["C'mon, Alica is there waiting for me!"]) def talkBadGuy1(self): if not self.talkedBadGuy1: self.talkedBadGuy1 = True base.messenger.send("moveChar", [(-0.4, 0, -0.3)]) if self.hasFakeIDs: base.messenger.send("showText", [STORY_BADGUY1_GOOD.copy()]) else: self.accept("continue", base.messenger.send, extraArgs=["switchToChapter", ["chapter4A"]]) base.messenger.send("showText", [STORY_BADGUY1_FAILED.copy()]) elif not self.shownFakeID: base.messenger.send("showNote", [ "Why are you still around, you disturb our ascertainment. Go get lost!" ]) else: base.messenger.send( "showNote", ["You already got me, just go on, my buddy won't be so easy."]) def showFakeID(self): if not self.talkedBadGuy1: base.messenger.send("showNote", [ "It's not the right time for it yet. I should talk to that guy in front of me first." ]) elif not self.shownFakeID: self.shownFakeID = True base.messenger.send("showText", [STORY_BADGUY1_2.copy()]) else: base.messenger.send("showNote", [ "The guys already saw them and should play along nice... for now." ]) def talkBadGuy2(self): if not self.talkedBadGuy1 or not self.shownFakeID: base.messenger.send("showNote", [ "Shady Guy: Where do you think you're going. You may not pass yet." ]) elif not self.talkedBadGuy2: self.talkedBadGuy2 = True base.messenger.send("moveChar", [(0.2, 0, -0.3)]) base.messenger.send("showText", [STORY_BADGUY2.copy()]) else: base.messenger.send("showNote", ["He remains silent."]) def talkAlica(self): if not self.talkedBadGuy1 or not self.shownFakeID: base.messenger.send("showNote", [ "Shady Guy: Where do you think you're going. You may not pass yet." ]) elif not self.talkedBadGuy2: base.messenger.send( "showNote", ["Other Shady Guy: This is none of ya busines. Go get lost!"]) else: self.accept("continue", base.messenger.send, extraArgs=["switchToChapter", ["chapter4B"]]) base.messenger.send("moveChar", [(0.35, 0, -0.3)]) base.messenger.send("showText", [STORY_ALICA.copy()])
class PacketGestion(): def __init__(self, interface, socket_to_server): self.character = Character(interface, socket_to_server) self.interface = interface self.socket_to_server = socket_to_server self.interface.set_character(self.character) self.map_frame = MapFrame(interface, self.character) self.combat = Combat(self.map_frame) self.script = Script(self.character) def set_socket(self, socket_to_server): self.socket_to_server = socket_to_server self.character.set_socket(self.socket_to_server) #self.interface.ongletsMap.set_socket(self.socket_to_server) def server_packet(self, packet): #character information if packet[:3] == "ASK": info_perso = packet[3:].split("|") self.character.base(id_=info_perso[1], pseudo=info_perso[2], lvl=info_perso[3], id_class=info_perso[4], sexe=info_perso[5], gfx=info_perso[6]) self.interface.ongletsPersonnage.create_charater( self.character.gfx, self.character.pseudo, self.character.id_, self.character.lvl) #spell (lvl,available spell...) elif packet[:2] == "SL" and packet[2:4] != "o+": spells_data = packet[2:].split(";") self.character.spells.update_spells(spells_data) #character stats (all stats pa, pm, res fix, rex....) elif packet[:2] == "As": self.character.character_stats(packet[2:].split("|")) self.interface.base_start(self.character) #self.map_frame.player_id = self.character.id_ self.interface.ongletsPersonnage.create_label_caracteristique( self.character) #map information (mapid, date of creation,key) elif packet[:3] == "GDM": data = packet.split("|") mapID = data[1] map_date = data[2] decryption_key = data[3] self.character.map.data(mapID, map_date, decryption_key) self.interface.ongletsMap.print_map(self.character.map) #entity map information elif packet[:2] == "GM": self.map_frame.parse_data(packet) elif packet[:3] == "GDF" and len(packet) > 7: self.map_frame.update_interactive(packet) elif self.character.entity: if packet[:2] == "GA": self.map_frame.update_entity(packet) elif packet[:3] == "GIC": self.combat.mouv_start_cell(packet) elif packet[:2] == "GE": self.character.isfighting = False elif packet[:3] == "GTM": self.combat.update_carac_entity(packet) elif packet[:3] == "GTS": data = packet[3:].split("|") if data[0] == self.character.id_: print("debut du tour...") threading.Thread(None, self.combat.fight).start()
def __init__(self): Constant.__init__(self) self.level = Level(Constant.constant['level']) self.player = Character(Constant.constant['player'], self.level)
class GameScreenHandler(DirectObject, GameScreen): def __init__(self): GameScreen.__init__(self) self.btnContinue.hide() self.mainChar = Character(self.frmContent.getCanvas(), (0,0,0), "mainChar", "mike") self.mainChar.animate("idle", "l", 3) self.mainChar.btn.reparentTo(self.frmContent.getCanvas(), 100) self.chapter = None self.inventory = Inventory(self.frmInventory) self.accept("quitGame", self.askQuit) self.accept("toggleAudio", self.toggleAudio) self.accept("switchToChapter", self.switchToChapter) self.accept("showText", self.showText) self.accept("showNote", self.showNote) self.accept("addInventory", self.addInventory) self.accept("getInventory", self.getInventory) self.accept("moveChar", self.mainChar.moveTo) self.accept("stopChar", self.mainChar.stop) self.accept("animateChar", self.mainChar.animate) if base.AppHasAudioFocus: self.btnAudioToggle["text"] = "Audio On" else: self.btnAudioToggle["text"] = "Audio Off" self.chapter = levelTree["chapter1"](self.frmContent.getCanvas()) self.mainChar.btn.setPos(self.chapter.startPos) LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,0)).start() def askQuit(self): self.yesNoDialog = YesNoDialog( text="Realy Quit?", command=self.quitGame) def quitGame(self, yes): self.yesNoDialog.destroy() if yes: self.ignoreAll() self.mainChar.stop() self.mainChar.destroy() self.chapter.destroy() base.messenger.send("exit") def toggleAudio(self): if base.AppHasAudioFocus: base.disableAllAudio() self.btnAudioToggle["text"] = "Audio Off" else: base.enableAllAudio() self.btnAudioToggle["text"] = "Audio On" def setChapter(self, chapterName): if self.chapter is not None: del self.chapter self.chapter = None self.chapter = levelTree[chapterName](self.frmContent.getCanvas()) def switchToChapter(self, chapterName): switchTo = Sequence( LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,1), (0,0,0,0)), Func(self.chapter.destroy), Func(self.setChapter, chapterName), Func(self.setStarPos), LerpColorInterval(self.frmFadeOverlay, 2.0, (0,0,0,0)), ) switchTo.start() def setStarPos(self): self.mainChar.setStart(self.chapter.startPos) def showNote(self, text): self.lblStory["text"] = text base.messenger.send("continue") def showText(self, textQueue): self.btnContinue.show() self.textQueue = textQueue self.accept("story_continue", self.nextText) self.nextText() def nextText(self): if len(self.textQueue) <= 0: base.messenger.send("continue") self.ignore("story_continue") self.lblStory["text"] = "" self.btnContinue.hide() return text = self.textQueue[0] self.lblStory["text"] = text del self.textQueue[0] def addInventory(self, itemKey, itemImage): self.inventory.addItem(itemKey, itemImage) def getInventory(self): base.messenger.send("inventoryRequest", [self.inventory.inventoryList])
class GraphicMode: """ Main class for graphical mode game """ def __init__(self): self.level = GraphicLevel(Constant.constant['level']) self.window_side = \ Constant.constant['sprite_number'] \ * Constant.constant['sprite_size'] self.player = Character(Constant.constant['player'], self.level) self.window = pygame.display.set_mode( (self.window_side, self.window_side)) def play(self): """ method used to launch graphical game """ progress = True pygame.init() pygame.font.init() background = pygame.image.load( Constant.constant['background']).convert() self.window.blit(background, (0, 0)) self.level.generate() self.level.display(self.window) x_hero, y_hero = self.level.position(self.level.structure, 'X') pygame.display.flip() while progress: font = pygame.font.SysFont('Comic Sans MS', 30) item_collected = font.render( 'Items : {}'.format(self.player.get_item_count()), False, (255, 255, 255)) for event in pygame.event.get(): if event.type == QUIT: progress = False elif event.type == KEYDOWN: if event.key == K_ESCAPE: progress = False elif event.key == K_RIGHT: self.check_victory(x_hero, y_hero + 1) if self.player.move(x_hero, y_hero, 'right'): y_hero += 1 elif event.key == K_LEFT: self.check_victory(x_hero, y_hero - 1) if self.player.move(x_hero, y_hero, 'left'): y_hero -= 1 elif event.key == K_UP: self.check_victory(x_hero - 1, y_hero) if self.player.move(x_hero, y_hero, 'up'): x_hero -= 1 elif event.key == K_DOWN: self.check_victory(x_hero + 1, y_hero) if self.player.move(x_hero, y_hero, 'down'): x_hero += 1 self.window.blit(background, (0, 0)) self.level.display(self.window) self.window.blit(item_collected, (300, 0)) pygame.display.flip() def check_victory(self, x_hero, y_hero): """ this method will check, at every moves, if the player is in front of the boss and if he has all requirement to win or not """ if self.level.is_final_boss(x_hero, y_hero): if self.player.has_all_items(): self.display_victory() else: self.display_defeat() def display_victory(self): """ Victory screen """ font = pygame.font.SysFont('Comic Sans MS', 30) self.window.fill('white') text = font.render('Victory !', False, (50, 205, 50)) self.window.blit(text, (170, 190)) pygame.display.flip() time.sleep(3) exit() def display_defeat(self): """ Defeat screen """ self.window.fill('white') font = pygame.font.SysFont('Comic Sans MS', 30) text = font.render('You\'re dead...', False, (178, 34, 34)) self.window.blit(text, (140, 190)) pygame.display.flip() time.sleep(3) exit()