Suite du jeu PONG (pygame)
Dessiner la balle, prevoir les variables
Nous allons nous interesser au dessin et au deplacement de la balle. Celle-ci doit normalement rebondir sur les murs gauche, haut et bas. Par contre, vous devrez l’empêcher d’atteindre le bord droit à l’aide de votre raquette. Sinon, vous perdrez la partie (ou vous perdrez 1 point).
Pour dessiner la balle, ajouter les variables suivantes:
- les coordonnées de son centre:
xb,yb - le rayon de la balle:
r_balle - sa vitesse dans la direction horizontale:
vx - sa vitesse dans la direction verticale:
vy - sa couleur:
couleur, un tuple constitué des intensités des 3 couleurs primaires.
Pour ajouter de la variété dans le jeu, la balle pourrait apparaitre à une position (légèrement) aléatoire, et avec une vitesse plus ou moins élevée.
Ces variables seront initialisées avec les valeurs suivantes (ajuster au besoin, et selon la difficulté voulue):
from random import randint
r_balle = 16
xb = 50
yb = 256 + randint(0,100)-50
vx = 2 + randint(0,2)
vy = 2
couleur = (45, 170, 250)
Pour dessiner la balle, utilisons la fonction draw.circle:
pygame.draw.circle(fenetre, couleur, (xb, yb), r_balle)
Deplacer la balle
La balle se deplace en modifiant xb et yb à chaque itération (boucle while). Il faudra ajouter la vitesse à chacune de coordonnées:
xb = xb+vx
yb = yb+vy
Prevoir les rebonds
Un rebond, c’est inverser le signe de la vitesse.
Par exemple, lorsque la balle rebondit sur la paroie de gauche, ou bien celle de droite, c’est le signe de vx, la vitesse horizontale qui change:
vx = -vx
Par contre, la vitesse verticale reste la même. (Faites-vous un schéma pour visualiser la situation).
On peut programmer ces conditions dans une fonction, et appeler celle-ci à l’interieur de la boucle principale while:
...
def rebond(xb,yb,vx,vy):
...
return xb,yb,vx,vy
while continuer:
...
xb,yb,vx,vy = rebond(xb,yb,vx,vy)
fenetre.fill([0,0,0])
...
Que reste t-il à faire?
- Les rebonds sur la raquette
- La gestion du score et de la fin de la partie
Pour l’écriture de texte dans la fenêtre pygame, consulter la page suivante sur stackoverflow
