Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pygame superposition de Rect

    23 décembre 2021 à 0:27:43

    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()



    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2021 à 8:40:23

      Bonjour.

      Ça viendrait pas du fait qu´à la ligne 52 "rectbouton_jouer" pointe vers la même surface que "rectbouton_quitter" en ligne 47.

      • Partager sur Facebook
      • Partager sur Twitter

      PB68

        23 décembre 2021 à 11:01:46

        Le fait que tu n'ai pas ta fenêtre de jeu, c'est parce que nulle part tu la génères (il n'y pas la partie "if menu_jouer" avec les fenetre.blit(..))

        Sinon ton image de fond est de quelle couleur ? vu que les boutons sont rouges, si le fond est rouge (et tes boutons n'ont pas de textes)

        • Partager sur Facebook
        • Partager sur Twitter
          28 décembre 2021 à 12:37:36

          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

          • Partager sur Facebook
          • Partager sur Twitter
            3 janvier 2022 à 13:28:17

            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
            • Partager sur Facebook
            • Partager sur Twitter

            Pygame superposition de Rect

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown