Mini-Projet

Modélisation

Lorsqu’on lance un objet en l’air, hormis le cas où il est lancé verticalement, sa trajectoire est une courbe que l’on peut assimiler à une parabole :

Courbe : parabole

On simule le mouvement d’une balle de masse m, dans une région où règne un champ de pesanteur uniforme. Le système étudié est la balle, modélisée par son centre B. On étudie ce mouvement dans un référentiel terrestre considéré comme galiléen muni d’un repère orthonormé de l’espace $\begin{pmatrix}O ; \overrightarrow{i},\overrightarrow{j},\overrightarrow{k}\end{pmatrix}$, choisi tel que la vitesse initiale soit dans le plan vertical $\begin{pmatrix}O ;\overrightarrow{i},\overrightarrow{j}\end{pmatrix}$. La simulation permet de choisir un espace où règne exclusivement le champ de pesanteur uniforme. A l’instant t = 0, le point B est en O.

Conception et réalisation d’une solution informatique en réponse à ce problème physique

Dans ce projet on utilise le module Tkinter. Le projet consiste à bâtir une application autour d’un concept de menu interactif. L’étude, étape par étape, va nous permettre de réaliser ce projet.

Cahier des charges :

Il s’agit d’écrire une application interactive qui permet de lancer une balle afin de toucher une cible figée ou mobile. Les fonctionnalités fournies par le programme de gestion du mouvement de balle sont les suivantes :

  • Créer une fonction d’animation permettant de simuler le mouvement de la balle
  • Créer l’objet visé
  • Placer un widget Entry qui permet de saisir la vitesse initiale
  • Placer un widget Entry qui permet de saisir l’angle de tir
  • Placer un bouton qui permet de lancer la balle
  • Faire des statistiques : par exemple le pourcentage de succès, ou d’échecs, …
  • Sauvegarder des données statistiques dans un fichier texte

Etape 1 :

On crée une fonction récursive nommée animation() permettant de gérer le déplacement de la balle comme suit :

Pour animer le déplacement de la balle, on utilise la méthode after() du module tkinter qui va nous permettre de déclencher une fonction après un délai précisé en millisecondes et qui a l’avantage de ne pas bloquer les autres processus (rafraîchissement de l’écran, détection des actions de la souris ou du clavier…) en procédant de la manière suivante : fenetre.after(delai, animation).

fenetre est le nom de la fenêtre créée dans laquelle on anime la balle. animation est le nom de la fonction récursive animation() créée de la façon suivante :

  1. On donne les coordonnées de la balle
  2. On place la balle
  3. On teste si la balle a touché la cible ou pas
    • On teste :
    • si la balle sort de l’écran ou touche le sol, on réinitialise sa position
    • sinon, on continue de faire avancer la balle
  4. Ensuite, la fonction animation() s'appelle elle-même comme suit : fenetre.after(50,animation)

Etape 2:

On crée une deuxième fonction nommer lancer() qui permet de lancer la balle de la façon suivante :

  • On initialise le temps
  • On récupère la valeur de la vitesse initiale
  • On récupère la valeur de l’angle de tir
  • Ensuite, on lance la fonction animation() créée auparavant.
  • Ensuite, la fonction animation() s'appelle elle-même comme suit : fenetre.after(50,animation) c'est-à-dire dans ce cas : la fonction récursive animation() est déclenchée après chaque 50 ms

Etape 3:

Afin de pouvoir toucher la cible en lançant la balle, on a besoin de :

  • créer un widget Entry qui permet de saisir la vitesse initiale
  • créer un widget Entry qui permet de saisir l’angle de tir
  • récupèrer les valeurs de la vitiesse initiale et de l’angle de tir
  • créer un bouton qui permet de lancer la balle à l’aide la fonction lancer() créée auparavant.
  • placer la balle qu’on veut relancer
  • créer l’objet visé

Etape 4:

On modifie le programme précédant afin de pouvoir :

  • faire des statistiques : par exemple le pourcentage de succès, ou d’échecs, …
  • Sauvegarder des données statistiques dans un fichier texte.

Etape 5:

On modifie le programme précédant afin de pouvoir :

  • Remplacer l’objet ciblé par un panier de basket
  • Remplacer la balle par un ballon de basket, vous pouvez télécharger les images en cliquant ici
  • Donner au joueur la possibilité d’essayer de lancer trois fois le ballon
    • créer le nombre de fichiers texte en fonction du nombre de joueurs qui participent à ce jeu
    • sauvegarder le score d’une partie dans un fichier texte.