On veut commencer un jeu type « angry birds » avec python et pygame.
Pourquoi pas déjà réussir une trajectoire « parabolique » ?
TP noté :
Une note a été donnée, elle pourra évoluer (en mieux ou en moins bien) la semaine prochaine !
On va en fait tracer la courbe d’une fonction point par point.
Étape 1 :
- Créer une fenêtre de taille
800
par600
- La remplir en bleu cyan
- Tracer un rectangle de 100 pixels d’épaisseur en bas de la fenêtre.
- Tracer le rectangle « tee » rouge défini ainsi :
(95,460,10,40)
- Tracer le rectangle « trou » noir défini ainsi :
(600,500,50,10)
- Créer les variables
x=100
y=450
rayon=10
- Placer la balle de rayon
rayon
sur le « tee » - Fini ? Dessiner le nuage avec quatre disques 😀
- On obtient ce fichier, par exemple :
import pygame pygame.init() fenetre=pygame.display.set_mode((800,600)) pygame.display.set_caption("Une trajectoire") # remplir le fond fenetre.fill((0,200,200)) # dessiner les rectangles pygame.draw.rect(fenetre,(20,128,20),(0,500,800,100),0) pygame.draw.rect(fenetre,(255,0,0),(95,460,10,40),0) pygame.draw.rect(fenetre,(0,0,0),(600,500,50,10),0) #nuage pygame.draw.circle(fenetre,(255,255,255),(500,100),40,0) pygame.draw.circle(fenetre,(255,255,255),(540,110),30,0) pygame.draw.circle(fenetre,(255,255,255),(470,105),30,0) pygame.draw.circle(fenetre,(255,255,255),(520,70),25,0) x=100 y=450 rayon=10 # dessiner les cercles pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0) #mettre à jour l'affichage pygame.display.flip() pygame.time.delay(1500) pygame.quit()
Étape 2 :
Recherche d’une fonction
- Avec geogebra,
- avec un tableur
- En python, on va au début de notre fichier, avant les tracés, définir cette fonction
def f(x): return 0.0056*x**2-3.9709*x+791.005
et ainsi pouvoir dessiner plusieurs points de la trajectoire dans une boucle :
for i in range(42) : x=x+5 # x devient x plus cinq, # on avance vers la droite y=int(f(x)) # y en fonction de x # le int pour avoir un entier # (pour les coordonnées)