====== Pygame : créer une fenêtre de jeu ======
===== Créer un projet repl.it =====
* aller sur le site https://repl.it/
* Créer un projet Repl.it en sélectionnant **PyGame**
{{ :isn:pygame_01.png | }}
===== Créer la fenêtre de jeu =====
Il faut tout d'abord importer la bibliothèque **Pygame**.
import pygame
Puis **initialiser** Pygame.
pygame.init()
Il ne reste plus qu'à définir les **dimensions** de la fenêtre de jeu :
* **hauteur et largeur**,
* **couleur** de fond.
Comme ces valeurs ne changeront pas tout au long du jeu, elles sont considérées comme des constantes et par convention, le nom des variables est écrit en majuscule
HAUTEUR = 400
LARGEUR = 400
Définir la couleur de fond :
COULEUR_FOND = (255, 255, 255)
Lancer l'affichage de la fenêtre de jeu :
ECRAN = pygame.display.set_mode((LARGEUR, HAUTEUR))
Les deux paramètres de la fonction set_mode() sont fournis sous la forme d'un **tuple** :
(LARGEUR, HAUTEUR)
===== La boucle du jeu =====
La **boucle de jeu** ou boucle d’animation, est une notion fondamentale dans les jeux. Elle correspond à une **boucle infinie** qu'il faudra interrompre pour quitter le jeu. Pour cela, on code une **action utilisateur** comme par exemple l'appui sur la touche [Esc] du clavier.
Il est pratique d'utiliser une **variable booléenne** :
* si sa valeur est **True**, la boucle se poursuit,
* si sa valeur est **False**, elle s’interrompt.
ARRET = False
while not ARRET:
# instructions de la boucle infinie
Durant cette boucle de jeu, le programme :
* prend en compte les **actions** (entrées) du joueur ou du système,
* **met à jour** les éléments du jeu,
* **rafraîchit** (redessine) l'écran.
Chaque itération devrait avoir la même durée que toutes les autres pour permettre une fluidité dans le déroulement du jeu et en général Pygame réalise 30 itérations par seconde (**30 images par seconde**).
Pour la couleur de fond :
* la fonction **fill()** permet de **remplir un élément** avec une couleur passée en paramètre (tuple de 3 valeurs)
* la fonction **pygame.display.update()** permet de rafraîchir l'écran.
La fonction **pygame.event.get()** permet d’intercepter tous les événements entrants notamment depuis le clavier, la souris, etc. Si on appuie sur la touche [Esc], alors le jeu est interrompu. Ceci est permis en utilisant les évènements du clavier suivants :
* pour savoir si une touche a été appuyée : **pygame.KEYDOWN**
* pour connaître s'il s'agit de le touche [Esc] ou [Echap] : **pygame.K_ESCAPE**
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
ARRET = True
===== Le système de coordonnées Pygame =====
L’écran est muni d’un système de **coordonnées orthonormé**.
L’origine du repère, le point (0, 0), est le **point supérieur gauche de l’écran**.
L’**axe des x** est l’axe **horizontal orienté vers la droite**.
L’**axe des y** est l’axe **vertical orienté vers le ba**s.
{{ :isn:pygame_02.png|}}
===== Programme complet : =====
import pygame
pygame.init()
HAUTEUR = 600
LARGEUR = 600
COULEUR_FOND = (255, 255, 255)
ECRAN = pygame.display.set_mode((LARGEUR, HAUTEUR))
ARRET = False
while not ARRET:
ECRAN.fill(COULEUR_FOND)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
ARRET = True
https://repl.it/@charlestecher/pygame-1
==== Les activités ... ====
[[.:accueil|Je reviens à la liste des activités.]]