Outils pour utilisateurs

Outils du site


ateliers:pygamelab:premierefenetre

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ateliers:pygamelab:premierefenetre [2019/01/04 07:48] izawennateliers:pygamelab:premierefenetre [2019/01/19 11:23] (Version actuelle) izawenn
Ligne 1: Ligne 1:
 ====== Ouverture d'une fenêtre Pygame ====== ====== Ouverture d'une fenêtre Pygame ======
 +// par Izawenn //
 ===== près requis ===== ===== près requis =====
 Avant de commencer, assurez vous d'avoir [[ateliers:pygamelab:installation|installer pygame]] Avant de commencer, assurez vous d'avoir [[ateliers:pygamelab:installation|installer pygame]]
-===== Explication du code: =====+===== Ouvrir une fenêtre =====
 Dans un premier temps, je dois importer dans python, la bibliothèque pygame. Dans un premier temps, je dois importer dans python, la bibliothèque pygame.
  
Ligne 46: Ligne 47:
          main()           main() 
                    
-Si je l'exécute j'arrive à ouvrir une fenêtre. Mais seulement pendant environs un dixième de seconde avant la fin du script. +Si je l'exécute j'arrive à ouvrir une fenêtre. Mais seulement pendant environs un dixième de seconde avant la fin du script. 
 + 
 +===== Maintenir la fenêtre =====
  
 Pour maintenir la fenêtre, il va falloir que je crée une [[ateliers:initiationpython:boucles|boucle]]. Pour maintenir la fenêtre, il va falloir que je crée une [[ateliers:initiationpython:boucles|boucle]].
Ligne 58: Ligne 61:
 C'est parti : C'est parti :
  
-Je déclare la variable qui me permet +Je déclare la variable qui me permet qui me permet de maintenir la boucle. 
 +     jeu_en_cours = True 
 + 
 +Ensuite on crée la boucle while : 
 +     while jeu_en_cours: 
 + 
 +Donc tant que la variable jeu_en_cours sera vrai, la boucle maintiendra la fenêtre ouverte. 
 + 
 +Maintenant il vaut définir les conditions d'arrêt 
 +     for event in pygame.event.get():  
 +            if event.type == pygame.QUIT: 
 +                jeu_en_cours = False 
 +Donc si l'on clique sur la petite croix de la fenêtre, la variable jeu_en_cours devient fausse, et la boucle s'arrête. 
 +     if event.type == pygame.KEYDOWN: 
 +                if event.key == pygame.K_ESCAPE: 
 +                    jeu_en_cours = False 
 +Si l'on appuis sur la touche échap, la variable jeu_en_cours devient également fausse, et la fenêtre se ferme de la même façon. 
 + 
 +Avec le code complet, voila ce que ça donne : 
 + 
 +     import pygame 
 +      
 +     def main(): 
 +         pygame.init() 
 +     
 +         taille_ecran = (800, 600) 
 +         ecran = pygame.display.set_mode(taille_ecran) 
 +      
 +         jeu_en_cours = True 
 +      
 +         while jeu_en_cours : 
 +       
 +             for event in pygame.event.get(): 
 +                  if event.type == pygame.QUIT: 
 +                       jeu_en_cours = False 
 +         
 +                  if event.type == pygame.KEYDOWN: 
 +                       if event.key == pygame.K_ESCAPE: 
 +                            jeu_en_cours = False 
 +         
 +         pygame.quit() 
 +      
 +    if __name__ == "__main__": 
 +         main()  
 + 
 +===== Framerate ===== 
 +Bon la nous venons de crée une boucle while qui fait tourner le script "à fond la caisse", c'est à dire autant de fois qu'il le peut. 
 +C'est totalement inutile pour nous, ça gâche des ressources de calcul pour rien. En fait, il nous suffit d'avoir  30 ou 60 boucles par seconde. 
 +Il va donc nous falloir ralentir un peu notre boucle while. 
 + 
 +Il existe plusieurs façon de le faire, mais pygame propose une solution toute faite. 
 + 
 +D'abord je vais crée une constante qui va contenir le nombre de boucle par seconde que je souhaite. Soit 30, soit 60 boucles par seconde. 
 +     FRAMERATE = 30 
 + 
 +Dans le main() avant la boucle while, il faut initialiser le framerate: 
 +     horloge_framerate = pygame.time.Clock() 
 + 
 +Vers la fin de la boucle, demande à pygame d'attendre un peu avant la boucle suivante 
 +     horloge_framerate.tick(FRAMERATE) 
 + 
 +Voila ce que cela donne avec le code complet 
 +     import pygame 
 +     
 +     FRAMERATE = 30 
 +     
 +     def main(): 
 +          pygame.init() 
 +      
 +          taille_ecran = (800, 600) 
 +          ecran = pygame.display.set_mode(taille_ecran) 
 +      
 +          jeu_en_cours = True 
 +      
 +          horloge_framerate = pygame.time.Clock() 
 +      
 +          while jeu_en_cours : 
 +       
 +             for event in pygame.event.get(): 
 +                 if event.type == pygame.QUIT: 
 +                     jeu_en_cours = False 
 +      
 +                 if event.type == pygame.KEYDOWN: 
 +                     if event.key == pygame.K_ESCAPE: 
 +                         jeu_en_cours = False 
 +      
 +             horloge_framerate.tick(FRAMERATE) 
 +              
 +         pygame.quit() 
 +      
 +     if __name__ == "__main__": 
 +         main() 
 + 
 + 
 +{{:ateliers:pygamelab:ouverture_fenetre.gif?600}} 
 + 
ateliers/pygamelab/premierefenetre.1546584539.txt.gz · Dernière modification : 2019/01/04 07:48 de izawenn