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 17:44] 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 62: Ligne 65:
  
 Ensuite on crée la boucle while : Ensuite on crée la boucle while :
-     while(jeu_en_cours):+     while jeu_en_cours:
  
 Donc tant que la variable jeu_en_cours sera vrai, la boucle maintiendra la fenêtre ouverte. Donc tant que la variable jeu_en_cours sera vrai, la boucle maintiendra la fenêtre ouverte.
Ligne 75: Ligne 78:
                     jeu_en_cours = False                     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. 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.1546620288.txt.gz · Dernière modification : 2019/01/04 17:44 de izawenn