Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame] Problème avec fonction du tutoriel

Anonyme
    10 octobre 2010 à 17:32:03

    Bonjour à tous, voilà je ne comprends pas je suis sur ce tutoriel là : http://www.pygame.org/docs/tut/MoveIt.html
    Et on me demande d'utiliser la fonction "create_graphics_screen()", ils ne disent pas à qui appartient cette fonction mais j'ai supposé qu'elle appartenait à pygame. Donc je lance IDLE, je tape ces lignes :
    >>> import pygame
    >>> pygame.init()
    (6, 0)
    >>> screen = pygame.create_graphics_screen()
    

    Et voici l'erreur :
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        screen = pygame.create_graphics_screen()
    AttributeError: 'module' object has no attribute 'create_graphics_screen'
    

    J'ai du oublié quelque chose, ou j'ai du faire une boulette, mais je vois pas vraiment laquelle.
    A propos j'utilise pygame 1.9 pour python 3.1, sous windows 7 32bits.

    Et, j'aurais une question, pourquoi à chaque fois que j'initialise, il me renvoit "(6, 0)" :euh:
    Et si quelqu'un peut m'aider à comprendre un peu ce code :
    >>> background = [terrain1, terrain1, terrain2, terrain2, terrain2, terrain1]
    >>> screen = create_graphics_screen()
    >>> for i in range(6):
    ...    screen.blit(background[i], (i*10, 0))
    >>> playerpos = 3
    >>> screen.blit(playerimage, (playerpos*10, 0))
    

    Je ne comprends pas, il ne précise pas à quoi sont égales ces variables ( terrain1 et terrain2 ) et... Le tutoriel étant en anglais, pourquoi ces noms sont en français?...
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      10 octobre 2010 à 17:46:09

      En fait le but de screen est de créer une surface et dans l'exemple si je ne me trompe pas c'est un genre de loin d'algo pour te faire comprendre les choses.

      Tu peux remplacer ton code par

      >>> import pygame
      >>> pygame.init()
      (6, 0)
      >>> screen = pygame.display.set_mode((640, 480))
      
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        10 octobre 2010 à 17:50:29

        En effet cette fois ci le code ne bug pas, enfaite il m'ouvre une fenêtre qui elle, bug, mais ça doit être normal, tu peux m'éclaircir sur les deux autres questions ou pas s'il te plaît ? C'est juste de la curiosité :)

        EDIT : Enfaite, même si le code ne bug pas, la fenêtre bug et relance IDLE, donc le code revient à 0, ce qui ne me permets pas d'avancer dans le tutoriel >.>'
        • Partager sur Facebook
        • Partager sur Twitter
          10 octobre 2010 à 18:10:17

          Bonjour,

          essaye ceci:

          import pygame
          from pygame.locals import *
          
          
          pygame.init()
          
          continuer = True
          #Une surface pour l'ecran
          screen = pygame.display.set_mode((300, 300))
          
          while continuer:
                  if event.type is pygame.QUIT:
                      continuer = False
          
          • Partager sur Facebook
          • Partager sur Twitter
            10 octobre 2010 à 18:26:28

            (6,0) ==> 6 modules initialisés, 0 echec.
            vraisemblablement, terrainX sont des surfaces et 'terrain' existe en anglais, beaucoup de mots français existent en anglais mais sont peu usités.

            je pense que tu devrais commencer par un tuto en français.
            • Partager sur Facebook
            • Partager sur Twitter

            Python c'est bon, mangez-en. 

            Anonyme
              10 octobre 2010 à 18:30:34

              @realmagma, mon code peut se quitter beaucoup plus simplement que cela, faut lui montrer juste la base.

              Pour quitter pygame il suffit de rajouter une ligne

              >>> import pygame
              >>> pygame.init()
              (6, 0)
              >>> screen=pygame.display.set_mode((640, 480))
              >>> pygame.quit()
              


              Ensuite tu peux aller plus loin
              • Partager sur Facebook
              • Partager sur Twitter
                10 octobre 2010 à 18:36:29

                Citation : fred1599

                @realmagma, mon code peut se quitter beaucoup plus simplement que cela, faut lui montrer juste la base.

                Pour quitter pygame il suffit de rajouter une ligne

                >>> import pygame
                >>> pygame.init()
                (6, 0)
                >>> screen=pygame.display.set_mode((640, 480))
                >>> pygame.quit()
                


                Ensuite tu peux aller plus loin


                je pense que realmagma voulait faire un equivalent graphique du raw_input()...
                perso je fais comme ça:
                while pygame.event.wait().type != pygame.QUIT: pass
                

                • Partager sur Facebook
                • Partager sur Twitter

                Python c'est bon, mangez-en. 

                Anonyme
                  10 octobre 2010 à 18:46:09

                  Citation

                  je pense que realmagma voulait faire un equivalent graphique du raw_input()...



                  Ah ok, j'aurais fais comme ça

                  import pygame
                  pygame.init()
                  lecran=pygame.display.set_mode((640,480))
                  while True:
                      for event in pygame.event.get():
                          if event.type == pygame.QUIT:
                              break
                  pygame.quit()
                  


                  Et je pense qu'il y a une erreur au niveau de la ligne 12 d'ailleurs

                  if event.type is pygame.QUIT:
                  


                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    10 octobre 2010 à 19:25:09

                    Tant de réponse :)
                    Tout d'abord merci à tous, mais vos solutions sous entendent que je dois enregistrer le code dans un fichier .py
                    Sinon, je suis tout à fait apte de commencer par un tutoriel en anglais ( à mon goût ), j'avoue me pas être pris la tête pour terrain, j'ai taper "traduction terrain" sur google et il m'a renvoyé une traduction anglaise, en gros, comme si le mot était français, et j'ai pas chercher plus loin.
                    Vous m'avez donné tout plein de code :lol:
                    Sinon ben oui je l'ai fais, j'ai enregistrer le tout dans un fichier .py et ça marche, le seul hic c'est que j'ai été obligé d'aller dans le gestionnaire des tâches et de directement arrêter le processus pour fermer la fenêtre, enfin, merci, mais, vous pensez que le tutoriel continuera à me faire des crasses de ce genre ? Où je pourrais pas utiliser les fonctions :S
                    Parce que si je reviens vous voir à chaque fois qu'il utilise une fonction... Enfin ça, je pense que seul le temps nous le dira
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      10 octobre 2010 à 19:48:48

                      Citation

                      Sinon ben oui je l'ai fais, j'ai enregistrer le tout dans un fichier .py et ça marche, le seul hic c'est que j'ai été obligé d'aller dans le gestionnaire des tâches et de directement arrêter le processus pour fermer la fenêtre



                      Le pygame.quit() te permet de quitter la fenêtre pygame, je ne vois pas le problème.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        10 octobre 2010 à 19:52:05

                        Moi non plus je ne vois pas le problème, mais après tout il est là, enfin, en sois c'est pas mortel, je m'occuperai de ce problème une autre fois, d'abord le tutoriel :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 octobre 2010 à 20:08:30

                          Même problème pour moi, pygame.quit() ferme la fenêtre mais le processus continue d'exister, et apparemment plante >_<
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            10 octobre 2010 à 20:43:09

                            Moi la fenêtre ne se ferme même pas ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 octobre 2010 à 20:44:23

                              avec quel code ?
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Python c'est bon, mangez-en. 

                              Anonyme
                                10 octobre 2010 à 21:08:05

                                C'est du à tkinter (IDLE) je crois bien. Ces deux GUI ne sont pas vraiment compatibles...

                                En faite, le vrai problème c'est IDLE. Quand on veut développer un petit (ou gros) programme en GUI dans une fenêtre d'édition de script d'IDLE, il est préférable de ne pas tester le script en le lançant de cette fenêtre (F5).
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 octobre 2010 à 21:16:21

                                  >>> import pygame
                                  >>> pygame.init() # 'Python' apparait dans mon dock, avec comme icône le logo PyGame
                                  ... (6, 0)
                                  >>> screen = pygame.display.set_mode((500, 500)) # La, ma fenêtre apparait sans problème
                                  >>> pygame.quit() # Ma fenêtre disparait, mais 'Python' reste actif (et planté)
                                  

                                  LeYan'tibus => Que veux tu dire ? IDLE utilise Tkinter ? :euh:
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    10 octobre 2010 à 21:25:48

                                    On fait comment alors ? :U
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 octobre 2010 à 21:27:59

                                      Raté, le problème ne vient pas d'IDLE : mon code plante aussi à partir du Terminal. Par contre, il y une différence au niveau des messages... Avec le Terminal, j'ai :
                                      >>> import pygame
                                      >>> pygame.init()
                                      (6, 0)
                                      >>> screen = pygame.display.set_mode((500, 500)) # En fait, c'est à partir de là que ça plante O.o
                                      2010-10-10 21:18:56.618 Python[700:60f] Warning once: This application, or a library it uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw and move to Quartz.
                                      >>> pygame.quit()
                                      

                                      J'ai ensuite essayé le code suivant :
                                      >>> # import et init(), blabla 
                                      >>> pygame.display.set_mode((500, 500))
                                      <Surface(500x00x32 SW)>
                                      

                                      ... Et le code ne plante pas. (EDIT : Ah si, mais pas imédiatement >.<)
                                      Le problème vient du fait d'affecter la fenêtre à une variable ? Je n'ai pas vraiment compris le message d'avertissement que python m'a renvoyé, un truc déprécié ou je ne sais quoi, quelqu'un peut m'expliquer ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        10 octobre 2010 à 21:34:23

                                        Tu peux éditer ton script avec IDLE, mais lorsque tu veux le tester, tu l'enregistre (ctrl+s) et puis tu double clic sur le fichier ou tu l'exécute depuis le terminal. ^^

                                        Darko', t'inquiète... :-° Maintenant que tu l'a bousculé une première fois, ça devrait bien ce passer à l'avenir... :lol: (j'ai pas d'meilleurs explications pour le moment :p )

                                        [edit] C'est juste une information. Il te dit juste que tu ne pourra pas utiliser la methode 'machin' parce qu'elle n'est plus dispo et que tu devra préférer la méthode 'truc' ;)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 octobre 2010 à 21:59:17

                                          vous êtes tous 2 sous windows 7 ? ... aucun problème sous linux.
                                          et essayé sous python 2.6 ?

                                          au fait, pygame.init() c'est pas une obligation, sauf si on utilise time.get_ticks().
                                          init() rallonge la fermeture de pygame.
                                          la plupart des autres modules peuvent s'init() séparément, ex: pygame.font.init().
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Python c'est bon, mangez-en. 

                                            10 octobre 2010 à 22:09:05

                                            Je suis sous MacOS 10.6 et j'utilise pour PyGame python2.6.6.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              11 octobre 2010 à 6:57:48

                                              J'ai pas encore testé et je peux pas actuellement mais tu es sûr que je peux taper mon code dans IDLE et qu'en le testant avec un double clique ça marchera ?
                                              C'est dommage mais c'est pas pire qu'avec Qt en C++ :lol:

                                              EDIT : Bon voilà finalement ça bug toujours, j'ai pourtant enregistrer en fichier .py, pas interprêter avec IDLE, mais j'ai fermer et double cliquer sur le fichier : le bug est exactement le même

                                              EDIT2 : enfaite c'est le code qui doit avoir une fail, car quand j'enlève la boucle, il se ferme bien comme prévu, donc je pense qu'enfaite le programme ne quitte simplement jamais la boucle
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              [Pygame] Problème avec fonction du tutoriel

                                              × 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