def levelSaveMenu(): """ Fait fonctionner le menu de sélection d'une sauvegarde. """ goInBlack() levels = IO.getLevels("save") levelSelected = 0 level = IO.loadSave(levels[0]) game.initSaveLevel(level) moveRender(levels, levelSelected, IO.loadSave) while not evenement.event["game"] == 'return': evenement.compute() ui.logic(evenement.event["tk"]) if evenement.event["game"] == "right": levelSelected = move(levelSelected, levels, 1, IO.loadSave) elif evenement.event["game"] == "left": levelSelected = move(levelSelected, levels, -1, IO.loadSave) elif evenement.event["game"] == "play": goInBlack() game.play(levels[levelSelected], "l") backInBlack(game.initSaveLevel, [levels[levelSelected]]) moveRender(levels, levelSelected, IO.loadSave) game.updateTime() animation.update() ui.render(game.getFps()) mise_a_jour() backInBlack(game.initPlayMenu)
def levelSelectionMenu(): """ Fait fonctionner le menu de sélection d'un niveau enregistré. """ goInBlack() levels = IO.getLevels("level") levelSelected = 0 level = IO.loadLevel(level=levels[0]) game.initSelectionLevel(level) moveRender(levels, levelSelected, IO.loadLevel) while not evenement.event["game"] == 'return': evenement.compute() ui.logic(evenement.event["tk"]) if evenement.event["game"] == "right": levelSelected = move(levelSelected, levels, 1, IO.loadLevel) elif evenement.event["game"] == "left": levelSelected = move(levelSelected, levels, -1, IO.loadLevel) elif evenement.event["game"] == "play": goInBlack() game.play(levels[levelSelected], "s") backInBlack(game.initSelectionLevel, [levels[levelSelected]]) moveRender(levels, levelSelected, IO.loadLevel) elif evenement.event["game"] == "edit": goInBlack() editor.editor(levels[levelSelected]) backInBlack(game.initSelectionLevel, [levels[levelSelected]]) moveRender(levels, levelSelected, IO.loadLevel) game.updateTime() animation.update() ui.render(game.getFps()) mise_a_jour() backInBlack(game.initPlayMenu)
def choicePlaystyleMenu(): """ Fait fonctionner le menu de sélection du mode de jeu. """ while not evenement.event["game"] == 'return': evenement.compute() ui.logic(evenement.event["tk"]) # home:play:selection if evenement.event["game"] == 'selection': levelSelectionMenu() # home:play:save if evenement.event["game"] == 'save': levelSaveMenu() # home:play:random if evenement.event["game"] == 'play': goInBlack() game.play(mode="r") backInBlack(game.initPlayMenu) game.updateTime() ui.render(game.getFps()) mise_a_jour()
def scoresMenu(): scores = IO.loadScore() levels = [key for key in scores["s"]] selected = 0 game.initScores(scores) while not evenement.event["game"] == 'return': evenement.compute() ui.logic(evenement.event["tk"]) if evenement.event["game"] == "up": selected += 1 for i in range(4): ui.setObject( "ltext" + str(i + 1), { "text": levels[(selected + i) % len(levels)] + " - " + str(scores["s"][levels[(selected + i) % len(levels)]][0]) + "\n\t" + scores["s"][levels[(selected + i) % len(levels)]][1] }) elif evenement.event["game"] == "down": selected -= 1 for i in range(4): ui.setObject( "ltext" + str(i + 1), { "text": levels[(selected + i) % len(levels)] + " - " + str(scores["s"][levels[(selected + i) % len(levels)]][0]) + "\n\t" + scores["s"][levels[(selected + i) % len(levels)]][1] }) game.updateTime() animation.update() ui.render(game.getFps()) mise_a_jour()
""" goInBlack() back(*args) evenement.resetGameEvent() if __name__ == '__main__': render.initWindow() # home game.initMenuUI() while not evenement.event["game"] == 'return': # ev=donne_evenement() # if ev[0]!='RAS': # print(ev) evenement.compute() ui.logic(evenement.event["tk"]) # home:play if evenement.event["game"] == 'play': goInBlack(game.initPlayMenu) choicePlaystyleMenu() backInBlack(game.initMenuUI) # home:editor elif evenement.event["game"] == 'editor': goInBlack() editor.editor() backInBlack(game.initMenuUI) elif evenement.event["game"] == 'score': goInBlack() scoresMenu() backInBlack(game.initMenuUI)
def editor(level=None): """ Lance et fait fonctionner l'éditeur de niveau. :param list level: Niveau à charger """ ui.reset() ui.setBackground("black") initEditorUI() blockMap=[ ["W", "G"], [".", "B"], ["D", "X"], ["R", "E"], ] editorWidth = 20 editorHeight = 12 if level: # squaresMap=[] level=IO.loadLevel(level=level) ui.setObject("timeLeftTextField", {"text": str(level[0][0])}) level=level[1:] ydiff=editorHeight-len(level) xdiff=editorWidth-len(level[0]) for y in range(len(level)): level[y].extend(["." for x in range(xdiff)]) level.extend([["." for y in range(editorWidth)] for y in range(ydiff)]) else: level=[["." for x in range(editorWidth)] for y in range(editorHeight)] render.update(level, "editorCanvas") render.update(blockMap, "blockCanvas") onPressed=False while not evenement.event["game"] == 'return': evenement.compute() ui.logic(evenement.event["tk"]) tkEvent=evenement.getTkEvent() # print(type(ui.objects["blockCanvas"]["selected"])) if ui.focus is None: if ui.exclusiveLayer is None: updateCursor(tkEvent, "editorCanvas", ui.objects["blockCanvas"]["squaresMap"][ui.objects["blockCanvas"]["selected"][0][1]][ui.objects["blockCanvas"]["selected"][0][0]], onPressed) updateCursor(tkEvent, "blockCanvas") # print(evenement.event["game"]) if evenement.event["game"] == "reset": render.update([["." for x in range(editorWidth)] for y in range(editorHeight)], "editorCanvas") # ui.render(game.getFps()) # continue elif evenement.event["game"] == "save": timer.factor = 0 if level: IO.save(ui.objects["editorCanvas"]["squaresMap"], level[1]) else: ui.newPrompt("Nom de la sauvegarde:", "Sauvegarder", success=lambda: IO.save(game.data, ui.objects["prompt_2"]["text"]), checker=IO.checkSaveName, anyway=lambda: timer.setFactor(1)) if type_evenement(tkEvent)=="Deplacement": if "|" in str(tkEvent): onPressed=True else: onPressed=False game.updateTime() ui.render(game.getFps()) mise_a_jour() ui.reset()
def play(level=None, mode="r"): """ Lance une partie. :param string level: Nom du niveau à charger :param string mode: Type de partie à jouer ("r": random "s": save "l":level) """ global data ui.reset() ui.setBackground("black") initGameUI() initData() data["level"] = level data["mode"] = mode # data["origin"] = data["map"][1::] if level and mode=="s": IO.loadLevel(data, level) elif level and mode=="l": IO.loadSave(level, data) else: IO.loadLevel(data) start(data) render.update(data["map"][1::], "gameCanvas") while True: evenement.compute(inGame=True) ui.logic(evenement.event["tk"]) #direction = (0, 0) if ui.focus is None: timer.start("game") gameEvenement=evenement.event["game"] if handleEvenement(gameEvenement): if gameEvenement=="return": break continue # if evenement.event["game"] == "reset" or ui.evenement == "reset": # continue # elif evenement.event["game"] == "move": # elif evenement.event["game"] == "save": # #fileName = IO.save(data) # continue # elif evenement.event["game"] == "load": # continue # elif evenement.event["game"] == 'return': # break # if evenement.event["game"] == "debug" or ui.evenement == "debug": # debug = (False if debug else True) # print("DEBUG ACTIVATED" if debug else "DEBUG DEACTIVATED") # ui.evenement = None # continue logic.updatePhysic(data) if data["fall"]["fallings"]: render.update(data["map"][1::], "gameCanvas") updateStats(data["time"]["remain"], (data["diamonds"]["owned"], int(data["map"][0][1])), data["score"]) updateTime() data["time"]["remain"] = timer.getTimer("game", int, remain=True) #print(timer.timers["game"]["progression"]) win = logic.status(data) logic.updateGameStatus() if win and data["mode"] == "s": break elif win: IO.loadLevel(data) start(data, keepScore=True) render.update(data["map"][1::], "gameCanvas") elif win==False: break ui.render(getFps()) mise_a_jour() ui.reset() initMenuUI()