예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
    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
예제 #4
0
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()
예제 #5
0
    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()
예제 #6
0
파일: main.py 프로젝트: yinyanfr/university
from jeu import *

jeu(3).jeu_commence()
예제 #7
0
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)
예제 #8
0
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
예제 #9
0
파일: main.py 프로젝트: Koorg1996/Jeu_2D
import jeu

game = jeu()
game._main_()