Esempio n. 1
1
def options(fenetre):

    font1 = pygame.font.Font("Fonts/font1.ttf", 40)
    font2 = pygame.font.Font("Fonts/font1.ttf", 70)
    selectionActuelle = 0
    largeurMin = 20
    largeurMax= 40
    hauteurMin = 10
    hauteurMax = 25
    ouvert = True
    vitesses = ["Lente", "Normale", "Rapide", "Extreme"]
    selections = ["Vitesse", "Largeur", "Hauteur", "Musique", "Retour"]

    sauvegarde = Sauvegarde()
    try:
        sauvegarde = load(file("sauvegarde", "rb"))
    except IOError: # Si le fichier n'exsite pas, on le cree
        dump(sauvegarde, file("sauvegarde", "wb"))

    while ouvert:
        for event in pygame.event.get(): # Gestion des evenements
            # Ferme l'application quand on clique sur la croix
            if event.type == QUIT:
                exit()

            if event.type == KEYDOWN:
                # Ferme aussi l'application quand on appui sur ESC
                if event.key == K_ESCAPE:
                    ouvert = False

        		# Deplacement dans le menu avec les fleches directionnelle
                if event.key == K_UP:
                    selectionActuelle -= 1
                    if selectionActuelle < 0:
                        selectionActuelle = 0

                if event.key == K_DOWN:
                    selectionActuelle += 1
                    if selectionActuelle >= len(selections):
                        selectionActuelle = len(selections) - 1

		        # Modification de la vitesse
		        # 4 niveaux de vitesses differents
                if selections[selectionActuelle] == "Vitesse":
                    if event.key == K_LEFT:
                        sauvegarde.vitesse -= 1
                        if sauvegarde.vitesse < 0:
                            sauvegarde.vitesse = 0

                    if event.key == K_RIGHT:
                        sauvegarde.vitesse += 1
                        if sauvegarde.vitesse > 3:
                            sauvegarde.vitesse = 3

                # Gestion du changement de la largeur
                if selections[selectionActuelle] == "Largeur":
                    if event.key == K_LEFT:
                        sauvegarde.largeur -= 1
                        if sauvegarde.largeur < largeurMin:
                            sauvegarde.largeur = largeurMin

                    if event.key == K_RIGHT:
                        sauvegarde.largeur += 1
                        if sauvegarde.largeur > largeurMax:
                            sauvegarde.largeur = largeurMax

                # Gestion du changement de la hauteur
                if selections[selectionActuelle] == "Hauteur":
                    if event.key == K_LEFT:
                        sauvegarde.hauteur -= 1
                        if sauvegarde.hauteur < hauteurMin:
                            sauvegarde.hauteur = hauteurMin

                    if event.key == K_RIGHT:
                        sauvegarde.hauteur += 1
                        if sauvegarde.hauteur > hauteurMax:
                            sauvegarde.hauteur = hauteurMax

                if event.key == K_RETURN:
                    if selections[selectionActuelle] == "Retour":
                        ouvert = False

        		    # Bascule de la musique entre On et Off
                    if selections[selectionActuelle] == "Musique":
                        if sauvegarde.jouerMusique == "On":
                            sauvegarde.jouerMusique = "Off"
                        else:
                            sauvegarde.jouerMusique = "On"

        fenetre.fill(couleurBlanche)  # On efface l'ecran

        # On affiche le menu
        espacement = fenetre.get_rect().height / (len(selections) + 1)
        for i in range(0, len(selections)):
            # On affiche d'abord l'option (Vitesse, Musique, etc)
            # La police change de couleur et taille lorsqu'on selectionne l'option
            if i == selectionActuelle:
                option = font2.render(selections[i], 1, couleurRouge)
            else:
                option = font1.render(selections[i], 1, couleurNoire)

            position = option.get_rect()
            position.centerx = fenetre.get_rect().centerx
            position.centery = espacement * (i + 1)
            fenetre.blit(option, position)

            # Puis on affiche sa valeur
            if selections[i] == "Vitesse":
                texte = vitesses[sauvegarde.vitesse]

            if selections[i] == "Largeur":
                texte = str(sauvegarde.largeur)

            if selections[i] == "Hauteur":
                texte = str(sauvegarde.hauteur)

            if selections[i] == "Musique":
                texte = sauvegarde.jouerMusique

            if selections[i] == "Retour":
                texte = ""

            if i == selectionActuelle:
                valeurOption = font2.render(texte, 1, couleurRouge)
            else:
                valeurOption = font1.render(texte, 1, couleurNoire)

            positionBis = valeurOption.get_rect()
            positionBis.centery = espacement * (i + 1)
            positionBis.centerx = position.right + (fenetre.get_width() - position.right) / 2
            fenetre.blit(valeurOption, positionBis)

        pygame.display.flip()

    # On sauvegarde les options
    dump(sauvegarde, file("sauvegarde", "wb"))

    fenetre = pygame.display.set_mode((tailleCase * (sauvegarde.largeur + 2 * tailleBord),
                                        tailleCase * (sauvegarde.hauteur + 2 * tailleBord)))
Esempio n. 2
0
 def play(self):
     if __main__.perso:
         Sauvegarde.sauvegarder(__main__.savePath)
         self.destroy()
         __main__.motGraph = MoteurGraphique()
         # try:    #Les thread entrainent parfois des problèmes d'inconsistance dans pygame
         __main__.motGraph.run()
         __main__.motGraph = None
Esempio n. 3
0
 def selectionner(self):
     global savePath, root
     if True:
         savePath = 'Saves/Player' + str(
             int(self.box.curselection()[0]) + 1) + '.txt'
         self.root.destroy()
         if self.charger: Sauvegarde.charger(savePath)
         else:
             self.warner = Tk()
             Label(self.warner,
                   text='Êtes vous sûr ? La sauvegarde sera ecrasée !',
                   bg='Red').pack()
             Button(self.warner,
                    text='Ecraser la sauvegarde',
                    command=self.warner.quit).pack(fill=X)
             Button(self.warner, text='Annuler',
                    command=self.annuler).pack(fill=X)
             Fonctions.centrer(self.warner, 73, 222)
             self.warner.mainloop()
             self.warner.destroy()
         root.destroy()
         debug("Step1")
         Menu.openMenu()
Esempio n. 4
0
def sauvegarder():
    Sauvegarde.sauvegarder(aDeviner, oldPropositions)
    pygame.event.post(pygame.event.Event(TOMENUEVENT))
Esempio n. 5
0
def partieSauvegardee():
    global aDeviner, oldPropositions
    aDeviner, oldPropositions = Sauvegarde.reprendre()
    print(aDeviner)
    print(oldPropositions)
    partie()
Esempio n. 6
0
def jouer(fenetre):
    sauvegarde = Sauvegarde()
    try:
        sauvegarde = load(file("sauvegarde", "rb"))
    except IOError: # Si le fichier n'exsite pas, on le cree
        dump(sauvegarde, file("sauvegarde", "wb"))

    # Creation de l'objet de type Serpent
    serpent = Serpent(sauvegarde)
    # Creation de l'objet de type fruit
    fruit = Fruit(serpent, sauvegarde)
    pygame.font.init()

    fontScore = pygame.font.Font("Fonts/font2.ttf", 20)
    fontGameOver = pygame.font.Font("Fonts/font3.ttf", 80)
    fontPause = pygame.font.Font("Fonts/font4.ttf", 60)

    # Cree une table de correspondance entre les constantes qui represente les
    # fleche directionnelles et le nom de la direction
    table = dict()
    table[K_UP] = "haut"
    table[K_RIGHT] = "droite"
    table[K_DOWN] = "bas"
    table[K_LEFT] = "gauche"

    #Creation de l'objet de type Musique
    musique = Musique()

    # Chargement de l'image de fond
    fond = pygame.image.load("Images/Fond.png").convert()
    # Creation de polices de caracteres
    scoreActuel = 0
    compteur = 0
    clock = pygame.time.Clock()
    ouvert = True
    pause = False

    while ouvert:
        for event in pygame.event.get(): # Gestion des evenements
            # Ferme l'application quand on clique sur la croix
            if event.type == QUIT:
                musique.stop()
                exit()
            if event.type == KEYDOWN:
                # On met le jeu en pause lors de l'appuis sur ESC
                if event.key == K_ESCAPE:
                    if pause:
                        pause = False
                        musique.reprendre()
                    else:
                        pause = True
                        musique.pause()
                        # Affichage de la pause
                        textePause = fontPause.render("Pause", 1, couleurBlanche)
                        position = textePause.get_rect()
                        position.center = fenetre.get_rect().center
                        fenetre.blit(textePause, position)
                        pygame.display.flip()

                # Teste si la touche est une fleche
                toucheFleche = (K_UP, K_RIGHT, K_DOWN, K_LEFT)
                if event.key in toucheFleche and pause == False:
                    # Teste si le changement c'est bien effectue
                    if serpent.changerDirection(table[event.key]):
                        serpent.miseAJour(fruit)
                        compteur = 0
                # L'appui sur une touche fleche change la direction du serpent et
                # lance automatique une mise a jour

        if pause == False:
            # On ajoute le temps ecoule depuis la derniere mise jour a un compteur
            # On met a jour le serpent si compteur > delaisMiseAJour
            # On selectionne delaisMiseAJour selon la vitesse du serpent
            # Plus delaisMiseAJour est grand plus le serpent sera lent
            delaisMiseAJour = [175, 100, 75, 50][sauvegarde.vitesse]
            compteur += clock.tick()
            if compteur >= delaisMiseAJour:
                serpent.miseAJour(fruit)
                compteur = 0

            # Si le serpent rencontre un bord du niveau ou se rentre dedans, on quitte
            if serpent.testCollision():
                musique.stop()
                break
            # On efface l'ecran
            fenetre.fill(couleurBlanche)

            # On affiche le fond
            for i in range(tailleBord, sauvegarde.largeur + tailleBord):
                for j in range(tailleBord, sauvegarde.hauteur + tailleBord):
                    fenetre.blit(fond, (i * tailleCase, j * tailleCase))

            # Affichage du fruit
            fruit.afficher(fenetre)

            # Affichage des serpents
            serpent.afficher(fenetre)

            # Mise a jour des scores
            scoreActuel = len(serpent.positionsCorps) - 1
            if scoreActuel > sauvegarde.score:
                sauvegarde.score = scoreActuel
                dump(sauvegarde, file("sauvegarde", "wb"))

            # Affichage des scores
            fenetre.blit(fontScore.render("Score : " + str(scoreActuel), 1,
                couleurNoire), (0, 0))
            fenetre.blit(fontScore.render("Meilleur score : " + str(sauvegarde.score), 1,
                couleurNoire), (0, 16))

            # On actualise l'ecran
            pygame.display.flip()

            # Moteur de la musique pour un potentiel changement de piste
            if sauvegarde.jouerMusique == "On":
                musique.moteurMusique(len(serpent.positionsCorps),
                                      sauvegarde.largeur,
                                      sauvegarde.hauteur) 

    # Affichage de l'ecran de GameOver
    fenetre.fill(couleurBlanche)
    gameOver = fontGameOver.render("Game Over !", 1, couleurRouge)
    fen = fenetre.get_rect()
    position = gameOver.get_rect()
    position.center = fen.center
    fenetre.blit(gameOver, position)
    score = fontScore.render("Votre score : " + str(scoreActuel), 1, couleurNoire)
    position = score.get_rect()
    position.centerx = fen.centerx
    position.centery = fen.height * 0.75
    fenetre.blit(score, position)
    pygame.display.flip()
    #joue la musique de game over
    sound = pygame.mixer.Sound(FILENAME_SOUND1)
    sound.set_volume(1.0)
    sound.play()
    # On fait une pause de 2s
    sleep(2)
    # On efface les evenements produits durant l'attente
    pygame.event.clear()
Esempio n. 7
0
 def run(self):
     Audio.playMusic('Rogue Legacy - Castle', -1)
     self.majPerso()
     self.mainloop()
     Sauvegarde.sauvegarder(__main__.savePath)