Aller au contenu principal

🩅 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:

=== 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.
astuce

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.

attention

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.