def perdre(dico_controles, ecran, font_jeu, raison): boucle = True quitter = False while boucle: ecran.fill((255, 255, 255)) for event in pygame.event.get(): if event.type == pygame.QUIT: boucle = False quitter = True elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("action"): boucle = False if raison == "conso": print_text( "Vous n'aviez pas assez de vivres... (Appuyé sur action pour continuer)", True, (255, 28, 0), (0, 0), font_jeu, ecran, True, True) else: print_text( "Votre abri n'a pas résisté... (Appuyé sur action pour continuer)", True, (255, 28, 0), (0, 0), font_jeu, ecran, True, True) pygame.display.flip() return quitter
def gagner(dico_controles, ecran, font_jeu): boucle = True quitter = False while boucle: ecran.fill((255, 255, 255)) for event in pygame.event.get(): if event.type == pygame.QUIT: boucle = False quitter = True elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("action"): boucle = False print_text( "Félicitation ! Vous avez survécu !(Appuyé sur action pour continuer)", True, (0, 185, 255), (0, 0), font_jeu, ecran, True, True) pygame.display.flip() return quitter
def hud(self, ecran, font_hud, meteo): print_text("Eau : {}/21".format(self.eau), True, (255, 255, 255), (1, 0), font_hud, ecran, False, False) print_text("Viande : {}/20".format(self.viande), True, (255, 255, 255), (1, 24), font_hud, ecran, False, False) print_text("Bois : {}/40".format(self.bois), True, (255, 255, 255), (1, 48), font_hud, ecran, False, False) print_text("Pierre : {}/40".format(self.pierre), True, (255, 255, 255), (1, 72), font_hud, ecran, False, False) print_text("Cuivre : {}/20".format(self.cuivre), True, (255, 255, 255), (1, 96), font_hud, ecran, False, False) print_text("Fer : {}/15".format(self.fer), True, (255, 255, 255), (1, 120), font_hud, ecran, False, False) print_text("Or : {}/10".format(self.gold), True, (255, 255, 255), (1, 144), font_hud, ecran, False, False) print_text("Jour(s) : {}".format(self.jour), True, (255, 255, 255), (0, 15), font_hud, ecran, True, False) print_text("Méteo : {}".format(meteo), True, (200, 0, 0), (550, 2), font_hud, ecran, False, False)
def boite_de_dialogue(ecran, perso, boite, font_jeu, message, dico_controles, verifier, font_hud, meteo, hud): pos_boite = boite.get_rect() pos_boite.centerx = ecran.get_rect().centerx pos_boite.centery = ecran.get_rect().centery pos_initial = 200 i = 0 message = message.split("#") pos = 2 faire_action = False boucle = True quitter = False while boucle: perso.current_map.afficher(ecran) ecran.blit(perso.current_char, (perso.x, perso.y)) if hud: perso.hud(ecran, font_hud, meteo) ecran.blit(boite, pos_boite) for i in range(0, len(message)): pos_y = pos_initial + 30 * (i + 1) print_text(message[i], True, (255, 255, 255), (0, pos_y), font_jeu, ecran, True, False) if verifier: action_pos(pos, 1, "Oui", True, BLANC, ROUGE, (0, pos_y + 30), font_jeu, ecran, True, False) action_pos(pos, 2, "Non", True, BLANC, ROUGE, (0, pos_y + 60), font_jeu, ecran, True, False) else: print_text("Appuyer sur la touche Action pour fermer le dialogue", True, (0, 185, 255), (0, pos_y + 30), font_jeu, ecran, True, False) for event in pygame.event.get(): if event.type == pygame.QUIT: boucle = False quitter = True elif event.type == pygame.KEYUP: if event.key == dico_controles.get("action"): if verifier: if pos == 1: faire_action = True return quitter, faire_action elif pos == 2: return quitter, faire_action else: boucle = False elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("bas"): pos += 1 if pos == 3: pos = 1 elif event.key == dico_controles.get("haut"): pos -= 1 if pos == 0: pos = 2 elif pos < 0: pos = 1 pygame.display.flip() return quitter, faire_action
def introduction(ecran, font_jeu, dico_controles): quitter_jeu = False boucle = True while boucle: ecran.fill((255,255,255)) for event in pygame.event.get(): if event.type == pygame.QUIT: boucle = False quitter_jeu = True elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("action"): boucle = False print_text("Durant mon voyage en mer, moi et mon équipage avons dû faire face à une tempête.", True, (0,0,0), (0,152-76), font_jeu, ecran, True, False) print_text("Malheureusement pour moi j'ai été éjecté du navire sur une de nos barques.", True, (0,0,0),(0,152),font_jeu,ecran, True, False) print_text("Je me suis échoué sur cette île, ma barque s'est brisée,", True, (0,0,0),(0,152+76),font_jeu,ecran, True, False) print_text("je dois attendre que mon équipage vienne me chercher, je n'ai pas beaucoup de temps", True, (0,0,0),(0,152+76*2),font_jeu,ecran, True, False) print_text("pour me construire un abri, la tempête va revenir d'ici une vingtaine de jours.", True, (0,0,0),(0,152+76*3),font_jeu,ecran, True, False) print_text("Je dois me limiter à trois actions par jour sous risque de manquer d'eau", True, (0,0,0),(0,152+76*4),font_jeu,ecran, True, False) print_text("Appuyer sur la touche Action pour continuer", True, (0,42,178),(0,152+76*5),font_jeu,ecran, True, False) pygame.display.flip() return quitter_jeu
def menu_principal(ecran, musique_menu, fond_menu, font_menu, font_jeu, fond_menu_option, font_option, font_titre, dico_controles): choix = 0 # variable qui ne sert qu'à vérifier le choix de l'utilisateur dans le menu try: volume_musique = vol_musique("data/volume.m") volume_musique = float(volume_musique) except: volume_musique = 0.5 musique_menu.set_volume(volume_musique) musique_menu.play(-1) #joue la musique à l'infini pos = 0 pygame.key.set_repeat( 200, 80 ) # le premier nombre correspond au nombres de millisecondes avant de commencer à répéter, puis le deuxieme c'est le nombre de millisecondes entre chaque répétitions if if_exist("data/save.stt") == True: while (choix != 1) and (choix != 2) and ( choix != 3 ): # 1 = nouvelle partie, 2 = continuer, 3 = quitter , les options seront gérés dans le menu ecran.blit(fond_menu, (0, 0)) print_text("Survive the tempest", True, BLEU, (0, 152 - 76), font_titre, ecran, True, False) action_pos(pos, 1, "Nouvelle partie", True, NOIR, ROUGE, (0, 152), font_menu, ecran, True, False) action_pos(pos, 2, "Charger la partie", True, NOIR, ROUGE, (0, 152 + 76), font_menu, ecran, True, False) action_pos(pos, 3, "Options", True, NOIR, ROUGE, (0, 152 + 76 * 2), font_menu, ecran, True, False) action_pos(pos, 4, "Quitter", True, NOIR, ROUGE, (0, 152 + 76 * 3), font_menu, ecran, True, False) print_text("Version : 1.0.0", True, NOIR, (0, 588), font_jeu, ecran, True, False) for event in pygame.event.get(): if event.type == pygame.QUIT: choix = 3 elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("bas"): pos += 1 if pos == 5: pos = 1 if event.key == dico_controles.get("haut"): pos -= 1 if pos == 0: pos = 4 elif pos < 0: pos = 1 elif event.type == pygame.KEYUP: if event.key == dico_controles.get("action"): if pos == 1: choix = 1 elif pos == 2: choix = 2 elif pos == 3: choix = gerer_option(ecran, fond_menu, fond_menu_option, musique_menu, font_option, dico_controles) elif pos == 4: choix = 3 pygame.display.flip() else: while (choix != 1) and ( choix != 3 ): # 1 = nouvelle partie, 2 = continuer, 3 = quitter , les options seront gérés dans le menu ecran.blit(fond_menu, (0, 0)) print_text("Survive the tempest", True, BLEU, (0, 152 - 76), font_titre, ecran, True, False) action_pos(pos, 1, "Nouvelle partie", True, NOIR, ROUGE, (0, 152 + 76), font_menu, ecran, True, False) action_pos(pos, 2, "Options", True, NOIR, ROUGE, (0, 152 + 76 * 2), font_menu, ecran, True, False) action_pos(pos, 3, "Quitter", True, NOIR, ROUGE, (0, 152 + 76 * 3), font_menu, ecran, True, False) print_text("Version : 1.0.0", True, NOIR, (0, 588), font_jeu, ecran, True, False) for event in pygame.event.get(): if event.type == pygame.QUIT: choix = 3 elif event.type == pygame.KEYDOWN: if event.key == dico_controles.get("bas"): pos += 1 if pos == 4: pos = 1 elif event.key == dico_controles.get("haut"): pos -= 1 if pos == 0: pos = 3 elif pos < 0: pos = 1 elif event.type == pygame.KEYUP: if event.key == dico_controles.get("action"): if pos == 1: choix = 1 elif pos == 2: choix = gerer_option(ecran, fond_menu, fond_menu_option, musique_menu, font_option, dico_controles) elif pos == 3: choix = 3 pygame.display.flip() musique_menu.stop() return choix, dico_controles
def gerer_option(ecran, fond_menu, fond_menu_option, musique_menu, font_option, dico_controles): pos_option = fond_menu_option.get_rect() pos_option.centerx = ecran.get_rect().centerx pos_option.centery = ecran.get_rect().centery pos = 0 en_action = False choix = 0 quitter_menu_option = False secu = 0 while not quitter_menu_option: volume_musique = musique_menu.get_volume() ecran.blit(fond_menu, (0, 0)) ecran.blit(fond_menu_option, pos_option) print_text("Options", True, BLANC, (0, 165), font_option, ecran, True, False) action_pos( pos, 1, "Volume de la musique : {}%".format(int(volume_musique * 100)), True, BLANC, ROUGE, (0, 200), font_option, ecran, True, False) action_pos( pos, 2, "Aller à gauche/Menu options : {}".format( dico_controles["gauche"]), True, BLANC, ROUGE, (216, 230), font_option, ecran, True, False) action_pos( pos, 3, "Aller à droite/Menu options : {}".format( dico_controles.get("droite")), True, BLANC, ROUGE, (216, 260), font_option, ecran, True, False) action_pos(pos, 4, "Aller en bas/Menus : {}".format(dico_controles.get("bas")), True, BLANC, ROUGE, (216, 290), font_option, ecran, True, False) action_pos( pos, 5, "Aller en haut/Menus : {}".format(dico_controles.get("haut")), True, BLANC, ROUGE, (216, 320), font_option, ecran, True, False) action_pos( pos, 6, "Faire une action/Menus : {}".format(dico_controles.get("action")), True, BLANC, ROUGE, (216, 350), font_option, ecran, True, False) action_pos( pos, 7, "Ouvrir interface/Quitter options : {}".format( dico_controles.get("retour")), True, BLANC, ROUGE, (216, 380), font_option, ecran, True, False) for event in pygame.event.get(): if event.type == pygame.QUIT: quitter_menu_option = True choix = 3 elif event.type == pygame.KEYDOWN: if not en_action: if event.key == dico_controles.get("retour"): quitter_menu_option = True if event.key == dico_controles.get("bas"): pos += 1 if pos == 8: pos = 1 elif event.key == dico_controles.get("haut"): pos -= 1 if pos == 0: pos = 7 elif pos < 0: pos = 1 elif event.key == dico_controles.get("droite"): if pos == 1: if volume_musique < 1.0: volume_musique += 0.01 musique_menu.set_volume(volume_musique) elif event.key == dico_controles.get("gauche"): if pos == 1: if volume_musique > 0.0: volume_musique -= 0.01 musique_menu.set_volume(volume_musique) if en_action == True: if pos == 2: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("gauche") dico_controles[cle] = secu dico_controles["gauche"] = event.key elif pos == 3: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("droite") dico_controles[cle] = secu dico_controles["droite"] = event.key elif pos == 4: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("bas") dico_controles[cle] = secu dico_controles["bas"] = event.key elif pos == 5: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("haut") dico_controles[cle] = secu dico_controles["haut"] = event.key elif pos == 6: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("action") dico_controles[cle] = secu dico_controles["action"] = event.key elif pos == 7: for cle, valeur in dico_controles.items(): if event.key == valeur: secu = dico_controles.get("retour") dico_controles[cle] = secu dico_controles["retour"] = event.key en_action = False elif event.type == pygame.KEYUP: if event.key == dico_controles.get( "action") and en_action == False: if pos in range(2, 8): en_action = True pygame.display.flip() modif_controles(dico_controles) volume_musique = str(volume_musique) ecrire_volume("data/volume.m", volume_musique) return choix
def action_pos(position_parcours, a_verifier, message, aliasing , couleur1 , couleur2, position , font , ecran, centre_x, centre_y): if position_parcours == a_verifier: print_text(message,aliasing, couleur2,position,font,ecran,centre_x,centre_y) else: print_text(message,aliasing, couleur1,position,font,ecran,centre_x,centre_y)