Je n'arrive pas à retourner au menu à la fin de la parti.

morgane_legros_ Messages postés 1 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 10 mai 2021 - Modifié le 10 mai 2021 à 14:01
LeoLeo99897 Messages postés 19 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 13 septembre 2023 - 9 mai 2022 à 17:51
Bonjour, c'est un jeu snake mais lorsque que je pers la page ce ferme et je voudrait qu'elle retourne au menu comment faire? J'ai mis mon code et mes image ci-dessous. J'espère que vous allez m'aider.





import sys,random
import pygame

class Jeu:
    def __init__(self):
        self.ecran = pygame.display.set_mode((800, 600))# defini la resoultion de la fenetre ,tuple(longueur,largeur)

        pygame.display.set_caption('Jeu Snake')# attribue un titre a la fenetre
        self.jeu_encours = True

        # creer les variables de position et de direction du serpent
        self.serpent_position_x = 300
        self.serpent_position_y = 300
        self.serpent_direction_x = 0
        self.serpent_direction_y = 0
        self.serpent_corps = 10

        # creer la position pour la pomme

        self.pomme_position_x = random.randrange(110,690,10)
        self.pomme_position_y = random.randrange(110,590,10)
        self.pomme = 10
        # fixer les fps
        self.clock = pygame.time.Clock()

        #creer une liste qui rescence toutes les positions du serpent
        self.positions_serpent = []

        # creer la variable en rapport avec la taille du serpent
        self.taille_du_serpent = 1

        self.ecran_du_debut = True

        self.image_tete_serpent = pygame.image.load('la_tete_du_serpent.png')


        # Charger l'image

        self.image = pygame.image.load('snake-game.jpg')
        # retrecir l'image
        self.image_titre = pygame.transform.scale(self.image,(200,100))

        # creer la variable score
        self.score = 0

    def fonction_principale(self):

        # permet de gerer les evenements , d'afficher certains composants du jeu grace au while loop

        while self.ecran_du_debut:

            for evenement in pygame.event.get():# verifier les evenements lorsque le jeu est en cours
                if evenement.type == pygame.QUIT:
                    sys.exit()

                if evenement.type == pygame.KEYDOWN:
                    if evenement.key == pygame.K_RETURN:

                        self.ecran_du_debut = False

                self.ecran.fill((0,0,0))

                self.ecran.blit(self.image_titre,(300,50,100,50))

                self.creer_message('petite','Le but du jeu est que le serpent se développe '
                                    , (250, 200, 200, 5), (240, 240, 240))
                self.creer_message('petite',' pour cela , il a besoin de pomme ,mangez-en autant que possible !!',
                                    (190, 220, 200, 5), (240, 240, 240))
                self.creer_message('moyenne','Appuyer sur Enter pour commencer', (200, 450, 200, 5),
                                    (255, 255, 255))

                pygame.display.flip()

        while self.jeu_encours:

            # creer un while loop pour creer l'ecran de debut /events /afficher l'image ...

            for evenement in pygame.event.get():# verifier les evenements lorsque le jeu est en cours
                #print(evenement)
                if evenement.type == pygame.QUIT:
                    sys.exit()

                # creer les evenements qui permettent de bouger le serpent

                if evenement.type == pygame.KEYDOWN:

                    if evenement.key == pygame.K_RIGHT:
                        # lorsque l'on presse la touche 'fleche droite'
                        self.serpent_direction_x = 10
                        self.serpent_direction_y = 0
                        #print('Droite')

                    if evenement.key == pygame.K_LEFT:
                        # lorsque l'on presse la touche 'fleche gauche'

                        self.serpent_direction_x = -10
                        self.serpent_direction_y = 0
                        #print('LEFT')

                    if evenement.key == pygame.K_DOWN:
                        # lorsque l'on presse la touche 'fleche vers le  bas'

                        self.serpent_direction_y = 10
                        self.serpent_direction_x = 0
                        #print('En bas')

                    if evenement.key == pygame.K_UP:
                        # lorsque l'on presse la touche 'fleche vers le haut'

                        self.serpent_direction_y = -10
                        self.serpent_direction_x = 0
                        #print('En haut ')



            # faire bouger le serpent si il se trouve dans les limites du jeu

            if self.serpent_position_x <= 100 or self.serpent_position_x >= 700 \
                or self.serpent_position_y <= 100 or self.serpent_position_y >= 550 :
                # si la position du serpent depasse les limites alors le jeu s'arrete

                 self.game_over()


            self.serpent_mouvement()

            # cree la cond si le serpent mange la pomme

            if self.pomme_position_y == self.serpent_position_y and self.serpent_position_x == self.pomme_position_x:

                print('ok')

                self.pomme_position_x = random.randrange(110,690,10)
                self.pomme_position_y = random.randrange(110,590,10)

                # augmenter la taille du serpent

                self.taille_du_serpent += 1
                #augmenter le score
                self.score += 1

            # creer une liste pour les qui stocke la position de la tete du serpent
            la_tete_du_serpent = []
            la_tete_du_serpent.append(self.serpent_position_x)
            la_tete_du_serpent.append(self.serpent_position_y)


            # append dans la liste des positions du serpent

            self.positions_serpent.append(la_tete_du_serpent)

            # cond pour resoudre le probleme des positions du serpent avec la taille du serpent
            if len(self.positions_serpent) > self.taille_du_serpent:

                self.positions_serpent.pop(0)
                print(self.positions_serpent)


            self.afficher_les_elements()
            self.se_mord(la_tete_du_serpent)

            self.creer_message('grande','Snake Game', (320, 10, 100, 50), (255, 255, 255), )
            self.creer_message('grande','{}'.format(str(self.score)), (375, 50, 50, 50), (255, 255, 255), )

            # afficher les limites
            self.creer_limites()
            self.clock.tick(25)

            pygame.display.flip()# mettre a jour l'ecran

    # creer une fonction qui permet de creer un rectangle qui representera les limites du jeu (dimension 100,100,600,500),3


    def creer_limites(self):
        # afficher les limites du jeu

        pygame.draw.rect(self.ecran,(255,255,255),(100,100,600,450),3)

    def serpent_mouvement(self):

        # faire bouger le serpent

        self.serpent_position_x += self.serpent_direction_x  # faire bouger le serpent a gauche ou a droite
        self.serpent_position_y += self.serpent_direction_y  # faire bouger le serpent en haut ou en bas

        # print(self.serpent_position_x,self.serpent_position_y)


    def afficher_les_elements(self):

        self.ecran.fill((0, 0, 0))  # attriubue la couleur noir a l'ecran

        # Afficher le serpent
        #pygame.draw.rect(self.ecran, (0, 255, 0), (self.serpent_position_x, self.serpent_position_y,
                                                   #self.serpent_corps, self.serpent_corps))

        self.ecran.blit(self.image_tete_serpent,(self.serpent_position_x,self.serpent_position_y,
                                                 self.serpent_corps,self.serpent_corps))

        # afficher la pomme
        pygame.draw.rect(self.ecran, (255, 0, 0),
                         (self.pomme_position_x, self.pomme_position_y, self.pomme, self.pomme))

        self.afficher_Serpent()


    def afficher_Serpent(self):
        # afficher les autres parties du serpent

        for partie_du_serpent in self.positions_serpent[:-1]:
            pygame.draw.rect(self.ecran, (0, 255, 0),
                             (partie_du_serpent[0], partie_du_serpent[1], self.serpent_corps, self.serpent_corps))

    def se_mord(self,tete_serpent):


        # le seprent se mord

        for partie_serpent in self.positions_serpent[:-1]:
            if partie_serpent == tete_serpent :
                self.game_over()
# creer une fonction qui permet d'afficher des messages

    def creer_message(self,font,message,message_rectangle,couleur):

        if font == 'petite':
            font = pygame.font.SysFont('Lato',20,False)

        elif font == 'moyenne':
            font = pygame.font.SysFont('Lato',30,False)

        elif font == 'grande':
            font = pygame.font.SysFont('Lato',40,True)

        message = font.render(message,True,couleur)

        self.ecran.blit(message,message_rectangle)


    def game_over(self):
        self.score =0
        self.jeu_encours = False


if __name__ == '__main__':

    pygame.init()# initie pygame
    Jeu().fonction_principale()
    pygame.quit()# quitte pygame

1 réponse

LeoLeo99897 Messages postés 19 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 13 septembre 2023
28 avril 2022 à 10:48
peut-etre essai avec un

def menu(self):
code interface
code interface

puis modifie gameover(self) en :

def game_over(self):
self.score =0
self.jeu_encours = False
self.menu()
0
LeoLeo99897 Messages postés 19 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 13 septembre 2023
28 avril 2022 à 14:10
Excuse moi, Jeu.menu() au lieu de self.menu()
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656 > LeoLeo99897 Messages postés 19 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 13 septembre 2023
28 avril 2022 à 23:02
BONJOUR
Oui, quand on réveille un sujet qui dort depuis un an, dire bonjour c'est bien.
D'ailleurs répondre au bout d'un an est ce utile?
J'espère pour morgane, qu'elle n'est pas morte en espérant une réponse.

Quoi qu'il en soit, pour tes prochaines intervention, par défaut, le site ne conserve pas l'indentation, ce qui est primordial en python. Il faut utiliser les balises de code, comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
LeoLeo99897 Messages postés 19 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 13 septembre 2023 > Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024
9 mai 2022 à 17:51
Bonjour,
Oui, effectivement, excusez-moi.
0
Rejoignez-nous