Bonjour, je vous contact aujourd'hui car j'ai rencontré quelques problèmes lors de la conception d'un mini jeu consistant à démarrer le programme, à la suite de quoi un menu est censé s'ouvrir de la même sorte qu'un accueil dans lequel nous retrouvons un bouton pour sortir du menu et un pour lancer le jeu.
Or, les 2 boutons ne s'affichent pas par dessus l'arrière plan choisi je ne comprends donc pas.
De plus j'ai donc rajouter les touches echap qui sert à remplacer le bouton de sorti et la touche entrer qui sert à remplacer le bouton de démarrage du jeu. La touche échap de sorti marche parfaitement il ne me reste donc plus qu'à trouver comment l'afficher par dessus l'arrière plan. Au contraire la touche entrer sensé démarrer le jeu tout en m'envoyant un message indiquant le démarrage du jeu, ne m'envoie que le message or la page de jeu ne s'ouvre pas.
je vous laisse ici le site sur lequel je me suis inspiré : https://openclassrooms.com/forum/sujet/pygame-spawn-aleatoire-dans-une-zone
Je vous remercie d'avance si vous parvenez à résoudre mon problème.
import pygame, sys
from pygame.locals import *
from random import *
pygame.init()
### Code permettant la création du de la fenêtre pygame
fenetre = pygame.display.set_mode((640,480), RESIZABLE)
#--------------------Variables des menus----------------------#
menu_demarrer = 1 # On définit la variable continuer qui va nous servir a créer une boucle afin de garder la fenêtre ouverte
fond_menu_demarrer = pygame.image.load("Cirrus-1.jpg").convert() # On charge l'image du premier menu pour ensuite l'introduire qq part
menu_jouer = 0
fond_menu_jouer = pygame.image.load("backgroundV2.jpg").convert()
### Recharge la page et ses nouvelles modifications
pygame.display.flip()
#----------------Création du joueur--------------#
joueur = pygame.image.load("pied_droit_haut.png")
joueur_x = 300
joueur_y = 500
rectjoueur = joueur.get_rect()
pygame.display.set_caption("Chute Goomba!!") # On change le nom de la fenêtre du jeu
#-----------Création des citrouilles (Ne sert a rien pour l'instant)---------------#
Goomba1 = pygame.image.load("Personnage.png")
Goomba1_y = randint(10,1050)
Goomba1_x = -175
LancementGoomba = 0
VitesseCitrouille1 = 0.6
rectangle_citrouille = Goomba1.get_rect()
#-------------Couleurs------------#
rouge = (255, 0, 0)
vert = (0, 255, 0)
bleu = (0, 0, 255)
COLORS = (rouge, vert, bleu)
color_index = 0
#-------------Bouton "EXIT"----------#
zonebouton_quitter = pygame.Rect((790,485),(175,175))
rectbouton_quitter = pygame.Surface(zonebouton_quitter.size)
rectbouton_quitter.fill(COLORS[color_index])
#------------Bouton "JOUER"----------#
zonebouton_jouer = pygame.Rect((200,475),(200,175))
rectbouton_jouer = pygame.Surface(zonebouton_quitter.size)
rectbouton_jouer.fill(COLORS[color_index])
#----------------Rafraichissement de la page--------------#
fenetre.blit(fond_menu_demarrer, (0, 0)) # Mise en place de l'image de fond
pygame.display.flip()
pygame.key.set_repeat(1,2) #sert a laisser une touche enfoncée afin de bouger le perso
#---------------Boucle pour garder la fenêtre--------------#
while menu_demarrer:
for event in pygame.event.get(): #Boucle permettant de fermer la fenêtre
if event.type == QUIT:
menu_demarrer = 0
menu_jouer = 0
#--------------Ses conditions permettent lors d'un clique sur une zone spécifique d'effectuer une action 'jouer' ou 'sortir'
if pygame.mouse.get_focused(): #On recupere le mouvement de la souris
mouse = pygame.mouse.get_pressed()#On recupere le clique de la souris
sx, sy = pygame.mouse.get_pos() #On enregistre les coordnées a chaque clique
if menu_demarrer == 1: #------------ ça évite d'avoir les boutons exit et jouer encore dans l'interface menu_demarrer
if mouse[0]: #Si le clique de la souris est celui de gauche (0) milieu (1) droite (2)
bouton_fermeture = zonebouton_quitter.collidepoint(sx, sy) #On definit "bouton_fermeture" par la zone du bouton quitter et de ses coordonées
bouton_demarrer = zonebouton_jouer.collidepoint(sx,sy)
if bouton_fermeture: #Donc si la zone correspond à ce que l"on veut on effectue une action
print("Fermeture du jeu...")
menu_demarrer = 0
if bouton_demarrer: #Donc si la zone correspond à ce que l"on veut on effectue une action
print("Lancement du jeu...")
menu_jouer = 1
menu_demarrer = 2
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
print("Fermeture du jeu...")
menu_demarrer = 0
if event.type == KEYDOWN:
if event.key == K_RETURN:
print("Lancement du jeu...")
menu_demarrer = 0
menu_jouer = 1
#Rafraichissement
pygame.display.flip()
Merci pour votre réponse, concernant les boutons "rectbouton_jouer" et "rectbouton_quitter" il me semble normal qu'ils pointent vers la même surface car ces deux boutons se trouveront en même temps par dessus la l'image de fond du menu demarrer.
Concernant mon image de fond elle représente une photo d'un désert donc principalement recouverte de note de couleur orange et jaune. Je pense donc que comme tu l'as dit cela provient du fait que je ne la génère pas. (je vais essayer d'arranger cela, dans le cas où je n'y parviendrai pas pensez vous pouvoir me guider où me l'expliquer ?)
- Edité par ClémentDavid18 28 décembre 2021 à 12:43:49
dans Surface, on donne une dimension de la surface, comme c'est la même taille, ça ne change pas grand chose; c'est le Rect qui définit la zone (la position) des boutons
Pygame superposition de Rect
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PB68