Dans le vif du sujet : à partir du fichier squelette-pygame.py
import pygame #importation de pygame
import traceback #module pour récupérer des infos sur les erreurs
from pygame.locals import * #on importe les constantes de pygame
pygame.init() #on lance pygame
#toujours encadrer vos programmes pygame par try et finally ce qui permet de fermer correctement la fenêtre
try:
#création d’une fenêtre
fenetre=pygame.display.set_mode((800,600))#fenêtre de taille 640*480
continuer=1
#boucle perpétuelle qui permet de garder la fenêtre ouverte
while continuer:
for event in pygame.event.get():
#pygame prend le premier évènement de la file
if event.type==QUIT: #l’évènement QUIT correspond au clic sur la croix
continuer=0 #permet de quitter la boucle
except :
traceback.print_exc()
finally:
pygame.quit()
exit()
Ordre proposé :
1. Colorier la fenêtre graphique en vert qui fasse pelouse.
2. Tracer les trois rectangles blancs à l’écran, le terrain et les deux buts. Et un « rond central » : un cercle
blanc.
3. Placer le personnage à l’écran.
4. Récupérer son rectangle et le poser à la position voulue : dans le « rond central ».
5. Gérer le déplacement du personnage avec les touches du clavier.
6. Gérer le fait que le personnage soit bien orienté, à gauche ou à droite suivant les touches pressées.
7. Faire apparaître une balle en haut à gauche et la faire avancer d’un angle de 45 degrés dans le terrain.
C’est le rectangle autour de la balle qui se « déplace ».
8. Rajouter un rectangle (invisible) à l’extérieur du terrain, de manière à ce que si le rectangle de la balle
entre en collision avec ce rectangle, rectangle de la balle.colliderect(le rectangle de touche),
alors sifflet.ogg retentisse.
9. Faire en sorte que la balle apparaisse à un coin aléatoire du terrain, et se déplace vers l’intérieur du terrain
avec un angle aléatoire.
10. Créer une liste de rectangles de touche, pour que la touche soit gérée quelle que soit la direction de la balle.
11. Gérer le fait que si la balle rentre en collision avec le personnage, elle « rebondisse ».
12. Gérer les buts, un peu comme les touches, mais avec bravo.ogg.
13. •Créer une liste de balles, vide au début [].
•Chaque balle est maintenant aussi une liste newball=[son rectangle, sa vitesse, son statut].
◦Le rectangle est à créer,
◦la vitesse à définir, c’est certainement un couple,
◦et le statut est un entier qui indique si la balle est dans le but, si elle est « sortie », etc.
•Les nouvelles balles apparaissent à intervalles réguliers ou aléatoires, et se rajoutent à la liste de balles.
•Si la balle est dans un but ou dehors, il faut ensuite la supprimer de la liste.
•Une boucle de type for balle in liste de balles : gère les déplacements, les collisions et le statut
des balles.
14. Gérer le score, à l’aide d’une variable et d’un affichage de texte...
15. A vous de finir avec les améliorations qui vous semblent nécessaires !
Bon courage ... et bon amusement !