Partage
  • Partager sur Facebook
  • Partager sur Twitter

System de changement de scène sur pygame et pyton

difficulté a changé des scène et des cartes

    1 septembre 2023 à 6:26:42

    Partie 1; l'abyrinthecore.py
    import pygame
    import cv2
    
    from game import Game
    
    # Charger la vidéo à l'aide de OpenCV
    video = cv2.VideoCapture('Ivvolex Ouedraogo.mp4')
    success, video_image = video.read()
    fps = video.get(cv2.CAP_PROP_FPS)
    
    # Initialiser Pygame
    pygame.init()
    
    if __name__ == '__main__':
        game = Game()
        game.run()
        pygame.quit()
        exit()
    Partie 2; jeux de l'abyrinthe.py
    • import pygame
      import cv2
      import pygame.display
      import pytmx
      import pyscroll
      
      
      class Scene:
          def __init__(self, game ):
              self.game = game
              self.fenetre = game.fenetre
              self.clock = pygame.time.Clock()
      
          def handle_events(self):
              pass
      
          def update(self):
              pass
      
          def render(self):
              pass
      
      
      class VideoScene(Scene):
          def __init__(self, game):
              super().__init__(game)
              self.video = cv2.VideoCapture('Iv.mp4')
              self.fps = self.video.get(cv2.CAP_PROP_FPS)
              self.finished = False
      
          def handle_events(self):
              for event in pygame.event.get():
                  if event.type == pygame.QUIT:
                      pygame.quit()
                      exit()
      
          def update(self):
              success, video_image = self.video.read()
              if success:
                  video_surf = pygame.image.frombuffer(
                      video_image.tobytes(), video_image.shape[1::-1], "BGR")
                  video_surf = pygame.transform.scale(video_surf, (1920, 1080))
      
                  self.fenetre.fill((0, 0, 0))
                  self.fenetre.blit(video_surf, (0, 0))
                  pygame.display.flip()
      
              if not success and not self.finished:
                  self.finished = True
                  new_map_scene = MapScene(self.game, 'menu principale.tmx')  # Charger la nouvelle carte
                  self.game.change_scene(new_map_scene)
      
              self.clock.tick(self.fps)
      
      
      class MapScene(Scene):
          def __init__(self, game, tmx_file):
              super().__init__(game)
              self.load_map(tmx_file)  # Chargez la nouvelle carte
      
          def load_map(self, tmx_file):
              # Charger et initialiser la nouvelle carte, créer les groupes, etc.
              tmx_data = pytmx.util_pygame.load_pygame(tmx_file)
              map_data = pyscroll.data.TiledMapData(tmx_data)
              map_layer = pyscroll.orthographic.BufferedRenderer(map_data, self.fenetre.get_size())
              self.game.group = pyscroll.PyscrollGroup(map_layer=map_layer, default_layer=1)
      
          def handle_events(self):
              for event in pygame.event.get():
                  if event.type == pygame.QUIT:
                      pygame.quit()
                      exit()
                  elif event.type == pygame.MOUSEBUTTONDOWN:
                      self.handle_mouse_click()
      
              self.handle_specific_events()
      
          def handle_mouse_click(self):
              mouse_pos = pygame.mouse.get_pos()
              button_x = 699
              button_y = 504
              button_width = 596
              button_height = 178
      
              button2_x = 1093
              button2_y = 719
              button2_width = 565
              button2_height = 170
      
              button3_x = 289
              button3_y = 714
              button3_width = 579
              button3_height = 174
      
              if (button_x < mouse_pos[0] < button_x + button_width and
                      button_y < mouse_pos[1] < button_y + button_height):
                  # Lorsque le bouton est cliqué, changez de scène vers la nouvelle carte
                  self.game.change_scene(MapScene(self.game, 'intro.tmx'))  # Utilisez le nom de votre nouvelle carte
      
              elif (button2_x < mouse_pos[0] < button2_x + button2_width and
                    button2_y < mouse_pos[1] < button2_y + button2_height):
                  pygame.quit()
      
              elif (button3_x < mouse_pos[0] < button3_x + button3_width and
                    button3_y < mouse_pos[1] < button3_y + button3_height):
                  self.game.change_scene(MapScene(self.game, 'infos moi.tmx'))  # Utilisez le nom de votre nouvelle carte
      
          def handle_specific_events(self):
              # Gérer les événements spécifiques à chaque carte ici
              pass
      
          def update(self):
              self.game.group.update(0)
      
          def render(self):
              self.game.group.draw(self.fenetre)
              pygame.display.flip()
              pygame.quit()
      
      
      class Game:
          def __init__(self):
              pygame.init()
              self.fenetre = pygame.display.set_mode((1920, 1080), pygame.RESIZABLE)
              pygame.display.set_caption("Labyrinthe party")
      
              self.clock = pygame.time.Clock()
              self.group = None
              self.scene = VideoScene(self)
      
          def change_scene(self, new_scene):
              self.scene = new_scene
      
          def run(self):
              while self.scene:
                  self.scene.handle_events()
                  self.scene.update()
                  self.scene.render()
                  self.clock.tick(50)
      
              pygame.quit()
              exit()
      
      
      if __name__ == '__main__':
          game = Game()
          game.run()


    • message d'erreurs


    Traceback (most recent call last):

      File "C:\Users\Ouedraogo\PycharmProjects\projetjeuxdelabyrinthe\Untitled-1 jeux l'abyrinthe.py", line 147, in <module>

        game.run()

      File "C:\Users\Ouedraogo\PycharmProjects\projetjeuxdelabyrinthe\Untitled-1 jeux l'abyrinthe.py", line 136, in run

        self.scene.handle_events()

      File "C:\Users\Ouedraogo\PycharmProjects\projetjeuxdelabyrinthe\Untitled-1 jeux l'abyrinthe.py", line 69, in handle_events

        for event in pygame.event.get():

                     ^^^^^^^^^^^^^^^^^^

    pygame.error: video system not initialized






    Bonjour, je suis actuellement a la création d'un mini jeux avec pygame, je rencontre des problème l'ors des chargement de cartes TMX et de la gestion de scène dans mon code, la vidéo se lance normalement et dés qu'elle se termine le jeux se ferme aussitot sans charger le menu principale qui est un fichier TMX et qui contient des boutons que j'ai créer avec des coordonné sur tiled , ses  boutons  m'aine vers des autres carte et je voudrais refaire cette procédure ainsi de suite. Merçis

    • Partager sur Facebook
    • Partager sur Twitter
      1 septembre 2023 à 12:14:37

      un des problèmes est peut-être que tu as 2 pygame.init() ?
      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2023 à 12:58:58

        j'ai enlever le pygame.init de la class game mais j'ai toujourd le meme problème 😔😔
        • Partager sur Facebook
        • Partager sur Twitter

        System de changement de scène sur pygame et pyton

        × 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.
        • Editeur
        • Markdown