Je n'arrive pas à retourner au menu à la fin de la parti.
morgane_legros_
Messages postés1Date d'inscriptionlundi 10 mai 2021StatutMembreDernière intervention10 mai 2021
-
Modifié le 10 mai 2021 à 14:01
LeoLeo99897
Messages postés19Date d'inscriptionmercredi 13 avril 2022StatutMembreDernière intervention13 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
LeoLeo99897
Messages postés19Date d'inscriptionmercredi 13 avril 2022StatutMembreDernière intervention13 septembre 2023 28 avril 2022 à 14:10
Excuse moi, Jeu.menu() au lieu de self.menu()
Whismeril
Messages postés18620Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 septembre 2023629
>
LeoLeo99897
Messages postés19Date d'inscriptionmercredi 13 avril 2022StatutMembreDernière intervention13 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.
LeoLeo99897
Messages postés19Date d'inscriptionmercredi 13 avril 2022StatutMembreDernière intervention13 septembre 2023
>
Whismeril
Messages postés18620Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 septembre 2023 9 mai 2022 à 17:51
28 avril 2022 à 14:10
28 avril 2022 à 23:02
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
9 mai 2022 à 17:51
Oui, effectivement, excusez-moi.