def __init__(self): self.en_jeu = True self.balle = Balle() self.raquette = Raquette() self.niveau = Niveau() self.vie = NOMBRE_VIES self.score = 0 self.briques_touchees = 0
def start(self, screen, player, niveau=1): with open('level.json', 'r') as infile: level = json.load(infile) if level == 1: Niveau.niveau1(self, player) elif level == 2: Niveau.niveau2(self, player) self.all_minus.draw(screen)
def creer_niveau(self, mode="solo"): """ Crée et initialise un nouveau niveau ainsi qu'un joueur. [mode] (str): Le mode de gestion du niveau (solo, client ou serveur). (solo par défaut). """ utile.debogguer("Création d'un nouveau niveau") if mode == "solo": self.niveau = Niveau(self) elif mode == "client": self.niveau = NiveauClient(self, self.client) elif mode == "serveur": self.niveau = NiveauServeur(self, self.serveur) self.niveau.initialiser_image()
class Jeu: def __init__(self): self.en_jeu = True self.balle = Balle() self.raquette = Raquette() self.niveau = Niveau() self.vie = NOMBRE_VIES self.score = 0 self.briques_touchees = 0 def gestion_evenements(self): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: if self.balle.sur_raquette: self.balle.sur_raquette = False self.balle.vitesse_par_angle(60) if self.en_jeu == False: self.vie = NOMBRE_VIES self.niveau.en_cours = 1 self.score = 0 def mise_a_jour(self): x, y = pygame.mouse.get_pos() self.balle.deplacer(self.raquette) if self.balle.loose: self.vie -= 1 self.balle.loose = False prec = False for brique in self.niveau.brique_liste: if brique.en_vie(): collision = brique.collision_balle(self.balle,prec) if collision[0]: if not(prec): if brique.vie > 0: jouer_son("touche") else: jouer_son("score") if collision[0] and not(collision[1]) : self.score += 1 self.raquette.arc_en_ciel = True self.briques_touchees += 1 prec = True self.raquette.deplacer(x) self.en_jeu = True def affichage(self): screen.fill(COULEURS["NOIR"]) afficher_murs() afficher_ATH(self) self.balle.afficher() self.raquette.afficher() self.niveau.afficher() def game_over(self): screen.fill(COULEURS["NOIR"]) if jeu.vie == 0 : texte, rect = myfont.render("GAME OVER", (255,255,255), size = monitorwidth/15) else : texte, rect = myfont.render("GAME WIN", (255,255,255), size = monitorwidth/15) rect.center = (int(width/2), int(height/2)) screen.blit(texte, rect) texte, rect = myfont.render("SCORE : " + str(self.score), (255,255,255), size = monitorwidth/38) rect.midtop = (int(width/2), int(height/5*3)) screen.blit(texte, rect) texte, rect = myfont.render("NIVEAU : " + str(self.niveau.en_cours-1), (255,255,255), size = monitorwidth/38) rect.midbottom = (int(width/2), int(height/5*2)) screen.blit(texte, rect) self.en_jeu = False
def main(): pygame.init() screen = pygame.display.set_mode(size) # Logo: icone = pygame.image.load(icone_path).convert_alpha() pygame.display.set_icon(icone) # Title: pygame.display.set_caption("DKLabyrinthe") # menu: acceuil = pygame.image.load(accueuil_path).convert_alpha() # fond: fond = pygame.image.load(font_path).convert() boucle_jeu = 1 while boucle_jeu: pygame.time.Clock().tick(30) # loop menu: start_acceuil = 1 while start_acceuil: pygame.time.Clock().tick(30) screen.blit(acceuil, (0, 0)) pygame.display.flip() for event in pygame.event.get(): # Close window with cross: if event.type == const.QUIT: sys.exit() # selection level: elif event.type == const.KEYDOWN: if event.key == const.K_F1: choix = path_to_level('level1.txt') start_acceuil = 0 elif event.key == const.K_F2: choix = path_to_level('level2.txt') start_acceuil = 0 # Chargement du niveau: niveau = Niveau(choix, screen) niveau.import_map() niveau.export_map() # Création de dk: dk = Perso(niveau) print(dk.x) start_game = 1 while start_game: pygame.time.Clock().tick(30) for event in pygame.event.get(): if event.type == const.QUIT: sys.exit() elif event.type == const.KEYDOWN and event.key == const.K_ESCAPE: start_game = 0 elif event.type == const.KEYDOWN: if event.key == const.K_DOWN: dk.move('bas') elif event.key == const.K_UP: dk.move('haut') elif event.key == const.K_RIGHT: dk.move('droite') elif event.key == const.K_LEFT: dk.move('gauche') # affichage des différents écrans. screen.blit(fond, (0, 0)) niveau.export_map() screen.blit(dk.position, (dk.x, dk.y)) pygame.display.flip() # condition pour gagner: if (dk.x, dk.y) == dk.niveau.arrival: start_game = 0
def __analyse_niveau(lignes): niveau = Niveau() niveau.entités_init = [] lignes.pop(0) i = 0 while lignes: ligne = lignes[0] balise = ligne.split()[0] if balise == C.DÉF_BALISE_CARTE: niveau.carte_l1 = GFichierMonde.__analyse_carte(lignes) niveau.l = len(niveau.carte_l1) niveau.h = len(niveau.carte_l1[0]) elif balise == C.DÉF_BALISE_CARTE_L2: niveau.carte_l2 = GFichierMonde.__analyse_carte(lignes) elif balise == C.DÉF_BALISE_JOUEUR: niveau.joueur_init, niveau.joueur_init_coords = GFichierMonde.__analyse_joueur( lignes) elif balise == C.DÉF_BALISE_NIVEAU_FIN: lignes.pop(0) break elif balise == C.DÉF_BALISE_ENTITÉ: entité = GFichierMonde.__analyse_entité(lignes) niveau.entités_init.append(entité) else: lignes.pop(i - 1) i += 1 niveau.carte = list(niveau.carte_l1) for y in range(niveau.h): for x in range(niveau.l): if niveau.carte_l2[x][y]: niveau.carte[x] = list(niveau.carte[x]) niveau.carte[x][y] = niveau.carte_l2[x][y] return niveau
jeu.dialoguer(dialogue) def testSerializedDialogue(): with open('resources/temporaire/dialogue.pickle', 'rb') as file: dialogue = pickle.load(file) jeu.dialoguer(dialogue) pygame.init() pygame.mixer.init() fenetre = Fenetre("test ISN Dialogue", constantes.largeur, constantes.hauteur) fenetre.fond = pygame.image.load("resources/galaxie.jpg").convert_alpha() with open('resources/niveau/1/firstDialog.pickle', 'rb') as file: firstDialog = pickle.load(file) with open('resources/niveau/1/middleDialog.pickle', 'rb') as file: middleDialog = pickle.load(file) with open('resources/niveau/1/lastDialog.pickle', 'rb') as file: lastDialog = pickle.load(file) jeu = Jeu(fenetre, Niveau(1), 0, 0) for explode in constantes.explodeList: explode = explode.convert_alpha() #testDialog() #testSerializedDialogue() testplay() pygame.quit()