đŠ Travail pratique 1 - Angle birds đŠ
- Pondération : 10%
- Date de l'énoncé : 15 septembre 2025
- Date de remise : 29 septembre 2025 23h59
- Modalité : Individuel
ĂnoncĂ©â
Vous devez crĂ©er un programme Python qui simule un lancer de projectile inspirĂ© dâAngry Birds. Lâobjectif est de toucher une cible (le « cochon ») placĂ©e Ă une distance horizontale et une hauteur donnĂ©es, en choisissant un angle et une vitesse initiale. Il peut y avoir du vent, mais il nâagit que sur lâaxe horizontal. Voici un exemple dâexĂ©cution:
=== Lancer de projectile Angle Birds ===
Entrez la difficulté (F/M/D): M
Distance horizontale du cochon en mĂštre (> 0): 50
Hauteur du cochon en mĂštre (>= 0): 8
Vitesse du vent en mÚtre par seconde, positif = vent arriÚre, négatif = vent de face: 2
â Tir 1 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 20
Raté⊠Le projectile retombe au sol aux alentours de x â 42.37 m
Le projectile est tombé au sol avant d'atteindre la cible (50.00 m).
â Tir 2 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 25
Raté⊠Le projectile retombe au sol aux alentours de x â 64.00 m
Au niveau de la cible (x = 50.00 m), le projectile est Ă y â 16.33 m (cible Ă y = 8.00 m)
â Tir 3 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 22.5
Raté⊠Le projectile retombe au sol aux alentours de x â 52.64 m
Au niveau de la cible (x = 50.00 m), le projectile est Ă y â 3.68 m (cible Ă y = 8.00 m)
â Tir 4 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 23.8
Raté⊠Le projectile retombe au sol aux alentours de x â 58.41 m
Au niveau de la cible (x = 50.00 m), le projectile est Ă y â 10.67 m (cible Ă y = 8.00 m)
â Tir 5 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 23
Raté⊠Le projectile retombe au sol aux alentours de x â 54.82 m
Au niveau de la cible (x = 50.00 m), le projectile est Ă y â 6.49 m (cible Ă y = 8.00 m)
â Tir 6 â
Angle de tir en degrés, (0.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 23.4
Touché ! Le projectile atteint la cible
Merci dâavoir jouĂ© Ă Angle Birds.
DĂ©tailsâ
Le programme commence par demander la difficultĂ©: F (Facile), M (Moyen) ou D (Difficile). La lettre nâest pas sensible Ă la casse. Si lâutilisateur entre une autre valeur, le programme adopte automatiquement le mode Moyen (par dĂ©faut) et affiche un message dâavertissement. Il demande ensuite la distance horizontale de la cible, sa hauteur et la vitesse du vent (positive pour un vent arriĂšre, nĂ©gative pour un vent de face). Pour Ă©viter les cas trop faciles ou incohĂ©rents, une scĂšne est refusĂ©e si la distance est infĂ©rieure Ă 10 mĂštres ou si la hauteur est nĂ©gative; dans ce cas, un message dâerreur sâaffiche et le programme sâarrĂȘte.
La difficultĂ© influence la prĂ©cision exigĂ©e et le nombre dâessais autorisĂ©s. En mode Facile, vous disposez de 8 essais et la cible est considĂ©rĂ©e atteinte si lâĂ©cart vertical au niveau de la cible est dâau plus 2,5 m. En mode Moyen, vous avez 6 essais pour une tolĂ©rance de 1,0 m. En mode Difficile, seulement 4 essais et une tolĂ©rance serrĂ©e de 0,5 m.
Chaque tir demande deux valeurs: lâangle (en degrĂ©s) et la vitesse initiale (en m/s). Lâangle doit ĂȘtre strictement supĂ©rieur Ă 0° et strictement infĂ©rieur Ă 90°. En mode Difficile, un angle minimal supplĂ©mentaire est imposĂ©: il doit ĂȘtre lĂ©gĂšrement plus grand que lâangle gĂ©omĂ©trique qui relie le lanceur Ă la cible, soit arctan(hauteur/distance) augmentĂ© de 5°, sans jamais atteindre 90°. Si lâangle entrĂ© ne respecte pas ces bornes, ou si la vitesse est nĂ©gative ou nulle, le tir est refusĂ© et ne consomme pas dâessai.
Le vent agit uniquement sur la composante horizontale de la vitesse. ConcrĂštement, la vitesse horizontale effective du projectile est la somme de la composante horizontale due au tir et de la vitesse du vent. Si ce vent de face est tellement fort que la vitesse horizontale effective devient nulle ou nĂ©gative, le tir est rejetĂ© avec un message explicite et lâessai nâest pas dĂ©comptĂ©.
Le mouvement vertical du projectile est soumis Ă la gravitĂ© (g = 9,81 m/sÂČ). Le programme commence par calculer la position oĂč le projectile retombe au sol. S'il retombe avant la cible, le programme affiche un message indiquant oĂč il retombe. Si le projectile touche le sol aprĂšs la position de la cible, le programme affiche la hauteur atteinte Ă la position de la cible. Si, Ă ce point, lâĂ©cart entre la hauteur du projectile et la hauteur du cochon est infĂ©rieur ou Ă©gal Ă la tolĂ©rance de la difficultĂ© choisie, la cible est considĂ©rĂ©e comme touchĂ©e et la partie se termine avec un message de fĂ©licitations. Dans le cas contraire, le joueur perd un essai. Le jeu se termine lorsque la cible est atteinte ou que le nombre dâessais autorisĂ©s est Ă©puisĂ©.
Voici d'autres exemples dâexĂ©cution, illustrant divers scĂ©narios:
- Ex. 1
- Ex. 2
- Ex. 3
=== Lancer de projectile Angle Birds ===
Entrez la difficulté (F/M/D): F
Distance horizontale du cochon en mĂštre (> 0): 60
Hauteur du cochon en mĂštre (>= 0): 0
Vitesse du vent en mÚtre par seconde, positif = vent arriÚre, négatif = vent de face: 0
â Tir 1 â
Angle de tir en degrés, (0.0 < angle < 90): 45
Vitesse initiale en mĂštre par seconde (> 0): 24.3
Touché ! Le projectile atteint la cible
Merci dâavoir jouĂ© Ă Angle Birds.
=== Lancer de projectile Angle Birds ===
Entrez la difficulté (F/M/D): D
Distance horizontale du cochon en mĂštre (> 0): 50
Hauteur du cochon en mĂštre (>= 0): 50
Vitesse du vent en mÚtre par seconde, positif = vent arriÚre, négatif = vent de face: 0
(Expert) Angle minimal requis â 50.0°
â Tir 1 â
Angle de tir en degrés, (50.0 < angle < 90): 45
Vitesse initiale en mĂštre par seconde (> 0): 15
Valeur dâangle invalide. Lâangle doit ĂȘtre > 50.0° et < 90°. RĂ©essayez.
â Tir 1 â
Angle de tir en degrés, (50.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): -5
Vitesse initiale invalide (doit ĂȘtre > 0). RĂ©essayez.
â Tir 1 â
Angle de tir en degrés, (50.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 15
Raté⊠Le projectile retombe au sol aux alentours de x â 19.86 m
Le projectile est tombé au sol avant d'atteindre la cible (50.00 m).
â Tir 2 â
Angle de tir en degrés, (50.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 16
Raté⊠Le projectile retombe au sol aux alentours de x â 22.60 m
Le projectile est tombé au sol avant d'atteindre la cible (50.00 m).
â Tir 3 â
Angle de tir en degrés, (50.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 17
Raté⊠Le projectile retombe au sol aux alentours de x â 25.51 m
Le projectile est tombé au sol avant d'atteindre la cible (50.00 m).
â Tir 4 â
Angle de tir en degrés, (50.0 < angle < 90): 60
Vitesse initiale en mĂštre par seconde (> 0): 18
Raté⊠Le projectile retombe au sol aux alentours de x â 28.60 m
Le projectile est tombé au sol avant d'atteindre la cible (50.00 m).
Vous avez épuisé vos 4 essais. La partie est terminée.
Merci dâavoir jouĂ© Ă Angle Birds.
=== Lancer de projectile Angle Birds ===
Entrez la difficulté (F/M/D): autre_que_F_M_D
Difficulté invalide, passage au niveau Moyen (M) par défaut.
Distance horizontale du cochon en mĂštre (> 0): -5
Hauteur du cochon en mĂštre (>= 0): 2
Vitesse du vent en mÚtre par seconde, positif = vent arriÚre, négatif = vent de face: 0
Erreur: distance doit ĂȘtre > 0 et/ou hauteur >= 0. Relancez le programme.
Merci dâavoir jouĂ© Ă Angle Birds.
Abordez le TP par petites étapes:
- Commencez par lire et valider les entrées (angle, vitesse); affichez-les.
- Calculez la position de chute sans gérer la cible; affichez la position de chute.
- Ajoutez la cible et vérifiez la réussite avec une tolérance fixe.
- IntĂ©grez la difficultĂ© (tolĂ©rance et nombre dâessais).
- Ajoutez le vent sur lâaxe x; rejetez les tirs avec une vitesse horizontale nulle ou nĂ©gative.
- Soignez les messages et ne consommez un essai que si la simulation a eu lieu.
Testez aprÚs chaque étape; de petits tests fréquents évitent un gros débogage final.
Remiseâ
Remettez un fichier nom_prenom_tp1.py sur Omnivox. Tout votre code doit ĂȘtre
dans ce fichier.
Selon la PDEA, vous perdez 10% de la note par jour de retard et aprĂšs 5 jours, vous obtenez 0%.
Grille d'Ă©valuationâ
Vous pouvez télécharger la grille d'évaluation ici.