def modedejeu(): running = True while True: screen.blit(background_1, (0,0)) text('choix', font, (255, 255, 255), screen, 20, 20) key = pygame.key.get_pressed() if key[K_LEFT]: jeu() if key[K_RIGHT]: jeuia() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: running = False pygame.display.update() mainClock.tick(60)
def guessTheNumber(): choix = menu() choix = int(choix) if choix == 1: nbAdeviner = random.randint(0, 100) jeu(demande_saisie_nb_mystere(1),nbAdeviner,0,100) elif choix == 2: nbAdeviner = random.randint(0, 1000) jeu(demande_saisie_nb_mystere(2),nbAdeviner,0,1000) elif choix == 3: nbAdeviner = random.randint(0, 1000000) jeu(demande_saisie_nb_mystere(3),nbAdeviner,0,1000000) else: nbAdeviner = random.randint(0, 1000000000000) jeu(demande_saisie_nb_mystere(4),nbAdeviner,0,1000000000000)
def multiplayer(self): self.perso.reset() self.partie = ["Multi", 0] self.perso.map = 0 const.runned = True const.input = [] const.output == "" const.host = ask(self, "Enter the IP of the server :").lower() thread=threading.Thread(target=client.connect) const.input.append("co_perso;"+self.perso.get_char(";")) const.input_udp = "set_adr_udp;"+self.perso.nom thread.start() tps_connect = 0 cmd = 1 while const.output == "": tps_connect +=1 if const.output != "Connected": cmd = menu(self, const.output, ["Ok"]) const.output = "" else: const.output = "" const.input.append("get_inv") const.input.append("get_mobs") while const.output == "": tps_connect +=1 self.perso.inv.empty() self.perso.inv.load(const.output) const.output = "" const.input.append("get_welcome") while not cmd in [5,0]: const.input.append("set_map;"+str(self.partie[1])) const.input.append("get_map;"+str(self.partie[1])) const.input.append("get_last_event_map;"+str(self.partie[1])) const.input.append("get_last_event") while const.map == []: tps_connect +=1 cmd = jeu(self, const.map, self.perso) const.map = [] self.partie[1] = self.perso.map const.runned = False const.mobs = True return cmd
def menu(): global LARGEUR, HAUTEUR LARGEUR, HAUTEUR = pygame.display.get_surface().get_size() running = True #le menu doit il continuer a fonctionner ? FPS = 30 retourdejeu = False #le menu s'affiche-t-il suite a un retour editeur ou de jeu ? #init + fond pygame.init() screen = pygame.display.set_mode((640, 480), HWSURFACE | DOUBLEBUF | RESIZABLE) pygame.display.set_caption("Place ton bloc ! - Menu") pygame.display.set_icon(pygame.image.load("img/icone.png")) fond = pygame.image.load("img/background.jpg").convert() screen.blit(fond, (0, 0)) menu = pygame.draw.rect( screen, (255, 255, 255), pygame.Rect(LARGEUR / 10, HAUTEUR / 10, 8 * LARGEUR / 10, 8 * HAUTEUR / 10)) pygame.mixer.music.load("sons/menu.mp3") pygame.mixer.music.play() pygame.display.flip() clock = pygame.time.Clock() #init du catalogue de niveaux niveau = [] while running: #pseudo-traitement de l'exception : le menu revient avec pygame en off et il faut recreer la fenetre if retourdejeu: FPS = 30 pygame.init() screen = pygame.display.set_mode((640, 480), HWSURFACE | DOUBLEBUF | RESIZABLE) pygame.display.set_caption("Place ton bloc ! - Menu") pygame.display.set_icon(pygame.image.load("img/icone.png")) fond = pygame.image.load("img/background.jpg").convert() screen.blit(fond, (0, 0)) LARGEUR, HAUTEUR = pygame.display.get_surface().get_size() menu = pygame.draw.rect( screen, (255, 255, 255), pygame.Rect(LARGEUR / 10, HAUTEUR / 10, 8 * LARGEUR / 10, 8 * HAUTEUR / 10)) pygame.mixer.music.load("sons/menu.mp3") pygame.mixer.music.play() pygame.display.flip() clock = pygame.time.Clock() running = True niveau = [] retourdejeu = False if pygame.mixer.music.get_busy() != True: pygame.mixer.music.play() #possible resize LARGEUR, HAUTEUR = pygame.display.get_surface().get_size() if LARGEUR > 400 or HAUTEUR > 400: #actualisation de la fenetre fond = pygame.image.load("img/background.jpg").convert() screen.blit(fond, (0, 0)) menu = pygame.draw.rect( screen, (255, 255, 255), pygame.Rect(LARGEUR / 10, HAUTEUR / 10, 8 * LARGEUR / 10, 8 * HAUTEUR / 10)) pygame.font.init() #titre 1 title_text("Place ton bloc ! - Choisissez votre niveau :", LARGEUR / 7, HAUTEUR / 7, (0, 0, 0), screen) normal_text("Niveaux standards :", LARGEUR / 7, HAUTEUR / 7 + 30, (0, 0, 0), screen) #ajout dans le catalogue des niveaux des differents niveaux de base try: niveau.append( affichageniveau(lecture("baselevels/Niveau1.lvl"), LARGEUR / 7, HAUTEUR / 7 + 60, screen)) niveau.append( affichageniveau(lecture("baselevels/Niveau2.lvl"), LARGEUR / 7, HAUTEUR / 7 + 80, screen)) niveau.append( affichageniveau(lecture("baselevels/Niveau3.lvl"), LARGEUR / 7, HAUTEUR / 7 + 100, screen)) niveau.append( affichageniveau(lecture("baselevels/Niveau4.lvl"), LARGEUR / 7, HAUTEUR / 7 + 120, screen)) niveau.append( affichageniveau(lecture("baselevels/Niveau5.lvl"), LARGEUR / 7, HAUTEUR / 7 + 140, screen)) except: print( "Erreur : Un des niveaux de base est introuvable. Merci de verifier votre installation" ) #bouton pour acceder a l'editeur de niveaux edition = pygame.draw.rect( screen, [249, 219, 56], pygame.Rect(int(2 * LARGEUR / 3 - 35), HAUTEUR / 7 + 170, 30, 15)) normal_text("Edit", int(2 * LARGEUR / 3 - 31), HAUTEUR / 7 + 171, (0, 0, 0), screen) try: #on recupere la liste des niveaux custom liste = os.listdir('levels/') inter = 200 #si il y a des niveaux custom, on les liste if liste: #titre 2 normal_text("Niveaux custom :", LARGEUR / 7, HAUTEUR / 7 + 170, (0, 0, 0), screen) for d in range(len(liste)): if str(liste[d][len(liste[d]) - 4:len(liste[d])]) == ".lvl": niveau.append( affichageniveaucustom( lecture("levels/" + liste[d]), LARGEUR / 7, HAUTEUR / 7 + 200 + d * 30, screen)) except: print( "Erreur : Impossible de lire les niveaux custom. Python a-t-il le droit de modifier des fichiers ?" ) pygame.font.quit() pygame.display.flip() #gestion des evenements for event in pygame.event.get(): #gestion fermeture fenetre if event.type == pygame.QUIT: running = False #gestion du resize elif event.type == VIDEORESIZE: screen = pygame.display.set_mode( event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE) screen.blit( pygame.transform.scale(fond, event.dict['size']), (0, 0)) #gestion des autres evenements si le menu ne fait pas directement suite a un retour, sinon erreur car pas de pygame.init if retourdejeu != True: #la souris est-elle sur la fenetre ? if pygame.mouse.get_focused(): x, y = pygame.mouse.get_pos() c = 0 #Est-elle sur le bouton edition ? collide = edition.collidepoint(x, y) if collide: #Click gauche ? try: pressed = pygame.mouse.get_pressed() if pressed[0]: print "Editing ... " pygame.mixer.music.stop() editeur() retourdejeu = True except: retourdejeu = True break #verification de la position pour chaque bouton de niveau while c < len(niveau): if niveau[c][2] != 1: collide = niveau[c][2].collidepoint(x, y) if collide: pressed = pygame.mouse.get_pressed() if pressed[0]: if os.path.isfile( "levels/" + niveau[c][0].getNom() + ".lvl"): print "Deleting ... " + niveau[c][ 0].getNom() removesave(niveau[c][0]) os.remove("levels/" + niveau[c][0].getNom() + ".lvl") niveau.remove(niveau[c]) pygame.time.wait(2000) c += 1 #faire deux boucles n'est pas forcement optimal, mais permet de mieux separer les taches for c in range(len(niveau)): collide = niveau[c][1].collidepoint(x, y) if collide: try: pressed = pygame.mouse.get_pressed() if pressed[0]: print "Opening ... " + niveau[c][ 0].getNom() pygame.mixer.music.stop() jeu(niveau[c][0]) retourdejeu = True except: retourdejeu = True break else: #si la fenetre n'est pas en 400*400 mini... pygame.font.init() normal_text("Merci d'agrandir la fenetre (mini 400*400)", 0, 0, (255, 0, 0)) pygame.font.quit for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == VIDEORESIZE: screen = pygame.display.set_mode( event.dict['size'], HWSURFACE | DOUBLEBUF | RESIZABLE) screen.blit( pygame.transform.scale(fond, event.dict['size']), (0, 0)) clock.tick(FPS) pygame.display.flip() pygame.quit()
def main(self): cmd = 1 while cmd: cmd = menu(self, "Main Menu", ["Play", "Edit Level", "Quit"]) if cmd == 2: self.perso.reset() self.perso.set_org_color() self.partie = ["Gen", 0] self.perso.map = 0 cmd = menu(self, "Edit Level", ["New level", "Load level"]) if cmd == 1: cmd = editeur(self, [], "Unnamed") elif cmd == 2: nom = ask(self, "Edit Level] Level's name :") cmd = editeur(self, open_map("map/custom/"+nom), nom) elif cmd == 1: if not os.path.isdir("data/perso/"): os.mkdir("data/perso/") characters = os.listdir("data/perso")[:5] characters = ["[ "+i+" ]" for i in characters] while len(characters) < 5: characters.append("--Empty--") characters.append("Cancel") cmd = menu(self, "Choose a Character", characters) if cmd > len(os.listdir("data/perso/")) and cmd != 6: self.perso.set_org_color() self.perso.nom = ask(self, "Enter a name for the Character") while cmd != 6: cmd = menu(self, "Choose "+self.perso.nom+"'s colors", ["Shirt", "Pants", "Hair", "Skin", "Other", "Done"], self.perso) if cmd != 6: menu_color(self, cmd-1, self.perso) self.perso.save() elif cmd < 6: self.perso.load(os.listdir("data/perso")[cmd-1]) cmd = menu(self, "Play", ["Single Player", "Multi Player", "Delete Character", "Edit Character", "Cancel"], self.perso) if cmd == 1: cmd = menu(self, "Single Player", ["Entering the Tower !", "Play Custom Level", "Cancel"], self.perso) if cmd == 1: if not os.path.isdir("data/save"): os.mkdir("data/save/") saves = os.listdir("data/save")[:5] saves = ["[ "+i+" ]" for i in saves] while len(saves) < 5: saves.append("--Empty--") saves.append("Cancel") cmd = menu(self, "Choose a Game", saves) if cmd < 6: self.perso.reset() if cmd > len(os.listdir("data/save/")) and cmd != 6: self.partie = [] self.partie = self.nouvelle_partie(ask(self, "New Game] Game's name : ")) else: self.partie = self.charger_partie(os.listdir("data/save")[cmd-1]) self.perso.map = self.partie[1] self.perso.id_porte = self.partie[2] cmd = 1 while open_map("save/"+self.partie[0]+"/map"+str(self.partie[1])) != [] and cmd == 1: cmd = jeu(self, open_map("save/"+self.partie[0]+"/map"+str(self.partie[1])), self.perso) self.partie[1] = self.perso.map if self.partie[1] < 0: if open_map("save/"+self.partie[0]+"/map"+str(self.partie[1])) == []: save_map("save/"+self.partie[0]+"/map"+str(self.partie[1]), self.gen_map(self.partie[1])) elif cmd == 2: self.perso.reset() self.partie = ["Gen", 0] self.perso.map = 0 cmd = jeu(self, open_map("map/custom/" + ask(self, "Load Level] Level's name :")), self.perso) elif cmd == 2: cmd = self.multiplayer() elif cmd == 3: cmd = menu(self, "Are you sure ?", ["Yes, delete "+self.perso.nom+" definitely !", "No, I want to keep "+self.perso.nom], self.perso) if cmd == 1: os.remove("data/perso/"+self.perso.nom) elif cmd == 4: old_name = self.perso.nom while cmd != 3: cmd = menu(self, "Edit Character", ["Rename", "Change colors", "Done"], self.perso) if cmd == 1: self.perso.nom = ask(self, "Enter a name") elif cmd == 2: while cmd != 6: cmd = menu(self, "Choose "+self.perso.nom+"'s colors", ["Shirt", "Pants", "Hair", "Skin", "Other", "Done"], self.perso) if cmd != 6: menu_color(self, cmd-1, self.perso) os.remove("data/perso/"+old_name) self.perso.save() const.runned = False pygame.quit()
from jeu import * jeu(3).jeu_commence()
def dancingguy () : # On définit la durée de la présentation # Le jeu commence à 32 secondes et 440 milisecondes # debutJeu = 32440 debutJeu = 500 # valeur de test # On initialise la SDL pygame.init() # On initialise SDL_mixer # - frequency # - size : nb de bits par échantillon # - channels : 1 pour mono, 2 pour stereo, # - buffer : nombre de samples dans le mixer : # diminuer ce nombre réduit la latence (mais des arrêts de son peuvent se produire) # l'augmenter empêche l'arrêt, mais augmente la latence pygame.mixer.init(frequency=44100, size=-16, channels=2, buffer=128) # On initialise SDL_ttf # pygame.font.init() # On charge la musique en mémoire # pygame.mixer.music.load("nico-20150823.mp3") # On créé les objets pour le texte # maFont = pygame.font.Font("FRGROT.TTF", 16) # maFont2 = pygame.font.Font("FRGROT.TTF", 14) # couleur = 255, 0, 0 # texte = maFont.render("Bienvenue dans le jeu \"Dancing Guy\"", True, (255,0,0)) # texte2 = maFont.render("Bienvenue dans le jeu \"Dancing Guy\"", True, (0,0,0)) # On créé une liste pour enregistrer la position du texte positionTexte = 0, 0 positionTexte2 = 1, 1 # On créé une horloge horloge = pygame.time.Clock() # On créé un entier pour retenir la durée (en miliseconde) écoulée depuis le début du jeu duree = 0 # On joue la musique pygame.mixer.music.play() # On créé une variable booléenne # pour enregistrer le statut de la musique (en pause ou pas) musiqueEnPause = False # On définit la taille de notre fenêtre tailleFenetre = 800, 600 # On créé la fenêtre : # charger les images après cette ligne # initialiser le mixer avant cette ligne fenetre = pygame.display.set_mode(tailleFenetre) # Avec convert() on charge en mémoire l'image du fond fond = pygame.image.load("dancefloor.jpg").convert() # On définit les coordonnées (x, y)) de la position où sera collé le fond positionFond = 0, 0 # On définit une variable mode mode = 0 # Une boucle infinie pour l'affichage while mode == 0: # Une boucle pour la gestion des évènements for event in pygame.event.get(): # Si le joueur clique sur la croix, on ferme la fenêtre if event.type == pygame.QUIT: sys.exit() # L'utilisateur presse une touche du clavier elif event.type == pygame.KEYDOWN: # Si l'utilisateur appuie sur Echap if event.key == K_ESCAPE: # on ferme la fenêtre sys.exit() # Si l'utilisateur appuie sur la touche "espace" elif event.key == K_SPACE: # Si la musique joue if not musiqueEnPause : # on arrête la musique pygame.mixer.music.pause() # Si elle ne joue pas else: # on la relance depuis le début pygame.mixer.music.unpause() # on inverse la valeur du booléen musiqueEnPause = not musiqueEnPause # On colle le fond sur la fenêtre fenetre.blit(fond, positionFond) # On colle le texte sur la fenêtre # fenetre.blit(texte2, positionTexte2) # fenetre.blit(texte, positionTexte) # On met le programme en pause pendant quelques secondes pour économiser du CPU pygame.time.wait(5) # On met à jour l'horloge duree += horloge.tick(60) # On affiche l'horloge if duree < debutJeu : decompte = debutJeu - duree # if decompte > 4000 : # texte4 = "Votre jeu va démarrer dans " + str((debutJeu - duree)/1000) + " secondes" # else : # texte4 = "Votre jeu va démarrer dans " + str(debutJeu - duree) + " milisecondes" # texte3 = maFont2.render(texte4, True, (255,0,0)) # fenetre.blit(texte3, (0, 18)) elif duree >= debutJeu : mode = 1 # On rafraichit l'affichage pygame.display.flip() if mode == 1 : jeu(fenetre, tailleFenetre)
def editeur(app, map, nom): input = Input() fond = Element() fond.changer_image(pygame.image.load(const.path_fond1).convert()) pointeur = element.Element() pointeur.changer_image(pygame.image.load("img/pointeur.png").convert_alpha()) b_txt = [] b_txt = write(app, "()", 0, 0) w_txt = [] w_txt = write(app, "()", 0, 0, (255,255,255)) blocs = [] blocs.append(Porte(0,0)) blocs.append(Bloc(1)) blocs.append(Bloc(5)) blocs.append(Bloc(6)) blocs.append(Lava()) blocs.append(BlocDanger(4,1)) blocs.append(Torch(13)) blocs.append(Terre(7)) choix=0 while not input.quit: input.update_event(app) pointeur.move_el(-pointeur.x+input.mouse[0], -pointeur.y+input.mouse[1]) if input.key[K_ESCAPE]: input.key[K_ESCAPE] = 0 cmd = menu(app, "Edit Level", ["Save Level","Save Level as", "Load Level","Try Level", "Quit"]) if cmd == 2: nom = ask(app, "Save as :") if cmd == 2 or cmd == 1: save_map("map/custom/"+nom, map) elif cmd == 3: nom = ask(app,"Load Level] Level's name : ") map = open_map("map/custom/"+nom) cmd =1 elif cmd == 4: jeu(app, map, app.perso) elif cmd == 0: return 5 if input.mousebuttons[4]: choix-=1 if choix < 0: choix = len(blocs)-1 input.mousebuttons[4] = 0 if input.mousebuttons[5]: choix+=1 if choix > len(blocs)-1: choix = 0 input.mousebuttons[5] = 0 if input.mousebuttons[1]: input.mousebuttons[1] = 0 for i in map: if (i.x == input.get_mouse_bloc()[0] and i.y == input.get_mouse_bloc()[1]) and choix != 6: map.remove(i) bloc = copy.copy(blocs[choix]) bloc.move_el(-bloc.x+input.get_mouse_bloc()[0], -bloc.y+input.get_mouse_bloc()[1]) map.append(bloc) if input.mousebuttons[3]: input.mousebuttons[3] = 0 for i in map: if (i.x == input.get_mouse_bloc()[0] and i.y == input.get_mouse_bloc()[1]): map.remove(i) b_txt = [] b_txt = write(app, str(input.get_mouse_bloc())+"\n"+nom, 0, 0) w_txt = [] w_txt = write(app, str(input.get_mouse_bloc())+"\n"+nom, 2, 2, (255,255,255)) app.blit(fond) for i in map: app.blit(i) for i in w_txt: app.blit(i) for i in b_txt: app.blit(i) blocs[choix].move_el(-blocs[choix].x+pointeur.x+25, -blocs[choix].y+pointeur.y+25) app.blit(blocs[choix]) app.blit(pointeur) app.flip() return 0
import jeu game = jeu() game._main_()