Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fermeture d'une fenêtre pygame avec mac os

Sujet résolu
    9 août 2011 à 7:34:48

    Bonjour, j'ai commencé à feuilleter un livre sur pygame et la programmation de jeu en général et je souhaiterais savoir comment fermer 'proprement une fenêtre' .
    Bien qu'ayant cherché sur internet je n'ai pas réussi à trouver.

    J'ai essayé ceci:

    import pygame 
    from pygame.locals import *
    
    pygame.init() 
    screen = pygame.display.set_mode((800, 600), 0, 32) 
    pygame.display.set_caption("Hello, World!")  
    
    while True:
        for event in pygame.event.get(): 
            if event.type == QUIT: 
                pygame.quit()
    


    Traceback (most recent call last):
      File "/Users/Asimov/Desktop/ntest.py", line 9, in <module>
        for event in pygame.event.get():
    error: video system not initialized


    J'ai aussi essayé avec sys.exit() mais j'ai toujours un message d'erreur:

    import pygame 
    from pygame.locals import *
    import sys
    
    pygame.init() 
    screen = pygame.display.set_mode((800, 600), 0, 32) 
    pygame.display.set_caption("Hello, World!")  
    
    while True:
        for event in pygame.event.get(): 
            if event.type == QUIT: 
                pygame.quit()
                sys.exit()
    


    Traceback (most recent call last):
      File "/Users/Asimov/Desktop/ntest.py", line 13, in <module>
        sys.exit()
    SystemExit


    Je vous remercie par avance si jamais vous aviez une solution ou alors si ceci est normal.

    Bonne journée.
    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2011 à 8:38:16

      et la boucle while tu la break quand ? (dans le 1er code)
      sais-tu que exit() est une fonction built-in , nul besoin donc d'importer sys

      import pygame 
      from pygame.locals import *
      
      pygame.init() 
      screen = pygame.display.set_mode((800, 600), 0, 32) 
      pygame.display.set_caption("Hello, World!")  
      
      run = True
      while run:
          for event in pygame.event.get(): 
              if event.type == QUIT:
                  run = False
      pygame.quit()
      


      ou si la boucle sert juste à marquer une pause ...

      from pygame import *
      
      scr = display.set_mode((800,600))
      display.set_caption("Hello, World!")
      
      while event.wait().type != QUIT: pass
      
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        9 août 2011 à 19:47:29

        Bonjour, merci pour votre réponse

        #!/usr/bin/env python 
        background_image_filename = 'mario.jpg' 
        mouse_image_filename = 'sonic.png' 
        import pygame 
        from pygame.locals import *
        
        pygame.init() 
        screen = pygame.display.set_mode((800, 600), 0, 32) 
        pygame.display.set_caption("Hello, World!") 
        background = pygame.image.load(background_image_filename).convert() 
        mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() 
        
        run = True
        
        while run: 
            for event in pygame.event.get(): 
                if event.type == QUIT:
                    run = False
             
            screen.blit(background, (0,0)) 
            x, y = pygame.mouse.get_pos() 
            x-= mouse_cursor.get_width() / 2 
            y-= mouse_cursor.get_height() / 2 
            screen.blit(mouse_cursor, (x, y)) 
            pygame.display.update()
        
        pygame.quit()
        


        Ca fonctionne correctement, en fait dans l'exemple du livre (Beginning game development with python) il importe le module sys et place le exit() juste après la condition if event.type == QUIT: c'est pour cela que je m'entêtais à placer pygame.quit à cet endroit.

        Merci à vous bonne soirée.
        • Partager sur Facebook
        • Partager sur Twitter
          10 août 2011 à 0:24:19

          si je peux me permettre ...

          #!/usr/bin/env python 
          background_image_filename = 'mario.jpg' 
          mouse_image_filename = 'sonic.png' 
          import pygame 
          from pygame.locals import *
          
          pygame.init() 
          screen = pygame.display.set_mode((800, 600)) 
          pygame.display.set_caption("Hello, World!") 
          background = pygame.image.load(background_image_filename)
          screen.blit(background,(0,0))
          mouse_cursor = pygame.image.load(mouse_image_filename)
          cursor_rect = mouse_cursor.get_rect()
          cursor_rect.center = pygame.mouse.get_pos()
          screen.blit(mouse_cursor,cursor_rect)
          pygame.display.flip()
          
          run = True
          
          while run: 
              for event in pygame.event.get(): 
                  if event.type == QUIT:
                      run = False
                  elif event.type == MOUSEMOTION:
                      r1 = screen.blit(background,cursor_rect,cursor_rect) 
                      cursor_rect.center = event.pos
                      pygame.display.update((screen.blit(mouse_cursor,cursor_rect),r1))
          
          pygame.quit()
          
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            10 août 2011 à 3:54:57

            Dans votre code je n'ai pas bien compris ces lignes là:
            r1 = screen.blit(background,cursor_rect,cursor_rect) 
                        cursor_rect.center = event.pos
                        pygame.display.update((screen.blit(mouse_cursor,cursor_rect),r1))
            
            o_O

            Et sinon avez vous lu ce livre ? Si oui, qu'en pensez vous ?
            Avez vous un autre livre sur pygame à me suggérer parce que celui là pour le peu d'exemple que j'ai testé il y a toujours une erreur.
            J'ai pu voir que ces livres:
            Game Programming - The L Line, the Express Line to Learning (Andy Harris)
            Game Programming With Python (Charles River Media Game Development)
            semblaient être appréciés.
            Si vous connaissez je serais ravi d'avoir votre avis.
            • Partager sur Facebook
            • Partager sur Twitter
              10 août 2011 à 8:41:27

              Citation : Asimoov

              Dans votre code je n'ai pas bien compris ces lignes là:

              r1 = screen.blit(background,cursor_rect,cursor_rect) 
                          cursor_rect.center = event.pos
                          pygame.display.update((screen.blit(mouse_cursor,cursor_rect),r1))
              

              o_O

              Et sinon avez vous lu ce livre ? Si oui, qu'en pensez vous ?
              Avez vous un autre livre sur pygame à me suggérer parce que celui là pour le peu d'exemple que j'ai testé il y a toujours une erreur.
              J'ai pu voir que ces livres:
              Game Programming - The L Line, the Express Line to Learning (Andy Harris)
              Game Programming With Python (Charles River Media Game Development)
              semblaient être appréciés.
              Si vous connaissez je serais ravi d'avoir votre avis.



              je n'ai lu que la doc du site pygame.org
              elle est assez facile à comprendre je trouve.



              r1 = screen.blit(background,cursor_rect,cursor_rect)
              # blit une zone rectangulaire de background sur screen à la position cursor_rect.pos,
              # cette zone est définie par cursor_rect.
              # en clair; je blit sur screen à la position du pseudo-curseur que la partie
              # de background qui se trouve sous le pseudo-curseur, ce qui à pour effet de
              # l'effacer. on mémorise dans r1 la zone rectangulaire retournée.
              
              
              cursor_rect.center = event.pos
              # place le centre du pseudo-curseur à la position du pointeur de la souris.
              



              # pygame.display.update((screen.blit(mouse_cursor,cursor_rect),r1))
              # j'aurai pû détailler ainsi mais j'aime bien les onelines:
              screen.blit(mouse_cursor,cursor_rect)
              # blit l'image du pseudo-curseur sur screen à sa nouvelle position.
              pygame.display.update((cursor_rect,r1))
              #actualise le display seulement là où il y à eu du changemenr,
              # çàd r1 (là où on a effacé) et cursor_rect (là où on a blit)
              
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                11 août 2011 à 0:03:43

                Merci pour les explications, je pense avoir compris le principe cela évite de 'bliter' le background entièrement à chaque fois que la souris bouge :euh: ?
                • Partager sur Facebook
                • Partager sur Twitter
                  11 août 2011 à 0:41:13

                  Citation : Asimoov

                  Merci pour les explications, je pense avoir compris le principe cela évite de 'bliter' le background entièrement à chaque fois que la souris bouge :euh: ?


                  voilà ...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                  Fermeture d'une fenêtre pygame avec mac os

                  × 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