Deux heures de codage, en partant de ce code
import pygame from pygame.locals import * pygame.init() fenetre=pygame.display.set_mode((800,600)) pygame.display.set_caption("Une trajectoire") clock = pygame.time.Clock() continuer=True x=100 y=450 rayon=10 try: def arrierePlan(): # 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) #nuages 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) while continuer : arrierePlan() # dessiner le cercle pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0) #mettre à jour l'affichage pygame.display.flip() #30 images par seconde clock.tick(30) #gestion des événements for event in pygame.event.get(): if event.type==QUIT: #la croix en haut à gauche continuer=False elif event.type==KEYDOWN: #appui sur une touche if event.key==K_ESCAPE: print("touche Escape") continuer=False elif event.key==K_LEFT: print("touche Gauche") elif event.key==K_RIGHT: print("touche Droite") elif event.key==K_SPACE : print("touche Space") else : print("autre touche") elif event.type==MOUSEBUTTONUP : (x,y)=event.pos finally: pygame.quit()
On implémente :
- le déplacement de la balle aux flèches du clavier,
- l’impossibilité de dépasser le sol,
- l’écran de fin quand la balle arrive dans le rectangle noir,
- une trajectoire automatique quand on appuie sur espace,
- faire que cette trajectoire soit une parabole.
Avec le code ci-dessous, finalisé par Alice et Valentin …
import pygame from pygame.locals import * pygame.init() fenetre=pygame.display.set_mode((800,600)) pygame.display.set_caption("Une trajectoire") pygame.key.set_repeat(200,100) clock = pygame.time.Clock() font1=pygame.font.SysFont("broadway",72,bold=False,italic=False) continuer=True saut=False deplacementVertical=42 x=100 y=450 rayon=10 try: def arrierePlan(): # 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) #nuages 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) while continuer : arrierePlan() if saut: x=x+12 y=y-deplacementVertical deplacementVertical=deplacementVertical-2 if y>500 : if 600<x800 or x<0 : x=100 y=450 saut=False deplacementVertical=42 # dessiner le cercle pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0) #mettre à jour l'affichage pygame.display.flip() #30 images par seconde clock.tick(30) #gestion des événements for event in pygame.event.get(): if event.type==QUIT: #la croix en haut à gauche continuer=False elif event.type==KEYDOWN: #appui sur une touche if event.key==K_ESCAPE: print("touche Escape") continuer=False elif event.key==K_LEFT: print("touche Gauche") x=x-5 elif event.key==K_RIGHT: print("touche Droite") x=x+5 elif event.key==K_SPACE : print("touche Space") saut=True elif event.key==K_DOWN : print("touche Bas") y=y+5 elif event.key==K_UP : print("touche Haut") y=y-5 else : print("autre touche") elif event.type==MOUSEBUTTONUP : (x,y)=event.pos finally: pygame.quit()