Voici un exercice clair, complet, prêt à l'emploi avec Pygame qui permettra à tes élèves de mieux comprendre la chute libre en simulant la pesanteur sur différents corps célestes.
À la fin de cet exercice, tu seras capable :
Lorsqu'un objet tombe en chute libre (sans frottements), sa vitesse et son altitude sont calculées ainsi :
Vitesse instantanée (v) :
[
v = g \cdot t
]
Altitude instantanée (y) :
[
y = h_0 - \frac{1}{2} \cdot g \cdot t^2
]
Avec :
| Corps céleste | Gravité (m/s²) |
|---|---|
| Terre 🌎 | 9.81 |
| Lune 🌕 | 1.62 |
| Mars 🚀 | 3.72 |
calcul_chuteCi-dessous se trouve un squelette complet d'un programme Python avec Pygame.
Tu dois uniquement compléter la fonction calcul_chute.
Voici un code entièrement fonctionnel avec une place clairement indiquée pour ton calcul :
import pygame
# Paramètres initiaux
LARGEUR, HAUTEUR = 600, 600
FPS = 60
# Paramètres physiques
GRAVITE = 1.62 # Change cette valeur : 9.81 (Terre), 1.62 (Lune), 3.72 (Mars)
HAUTEUR_INITIALE = 500 # mètres
pygame.init()
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
pygame.display.set_caption("Simulation de la chute libre")
clock = pygame.time.Clock()
font = pygame.font.SysFont("Arial", 18)
def calcul_chute(gravite, hauteur_initiale, temps):
"""
Complète cette fonction !
Retourne l'altitude actuelle et la vitesse actuelle de l'objet.
"""
altitude = 0 # À compléter !
vitesse = 0 # À compléter !
return altitude, vitesse
def main():
running = True
temps = 0
objet_en_chute = True
# Position graphique initiale de l'objet
x_objet = LARGEUR // 2
rayon_objet = 15
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if objet_en_chute:
altitude, vitesse = calcul_chute(GRAVITE, HAUTEUR_INITIALE, temps)
# Si l'objet touche le sol, on arrête la chute
if altitude <= 0:
altitude = 0
objet_en_chute = False
else:
temps += 1 / FPS
# Conversion mètres vers pixels pour afficher à l'écran
pixels_par_metre = HAUTEUR / (HAUTEUR_INITIALE + 50)
y_objet = HAUTEUR - int(altitude * pixels_par_metre) - rayon_objet
# Affichage graphique
fenetre.fill((255, 255, 255)) # fond blanc
# Sol
pygame.draw.rect(fenetre, (100, 200, 100), (0, HAUTEUR - 10, LARGEUR, 10))
# Objet
pygame.draw.circle(fenetre, (255, 0, 0), (x_objet, y_objet), rayon_objet)
# Affichage des infos en haut à droite
infos = [
f"Altitude : {altitude:.2f} m",
f"Vitesse : {vitesse:.2f} m/s",
f"Gravité : {GRAVITE:.2f} m/s²"
]
for i, texte in enumerate(infos):
surface_texte = font.render(texte, True, (0, 0, 0))
largeur_texte, hauteur_texte = surface_texte.get_size()
fenetre.blit(surface_texte, (LARGEUR - largeur_texte - 10, 10 + i * (hauteur_texte + 5)))
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
main()
Ce programme visuel et interactif aide à comprendre clairement comment la gravité influence la chute libre sur différents corps célestes.
À toi de jouer ! 🌠