Projet : étape 2
Promenades au hasard

But: Implémenter des animaux abstraits capables de se déplacer aléatoirement dans leur environnement et de se diriger vers des cibles.

Concepts nécessaires: classes, constructeurs/destructeurs, surcharge d'opérateurs, héritage

Ces concepts sont expliqués dans les cours 16, 17, 18 & 19

Fichiers nécessaires : partie2.zip


Mise en place

Mise en place

L'archive fournie pour cette étape contient donc une nouvelle version du fichier CMakeLists.txt permettant de compiler le matériel de cette partie. Elle contient aussi  :

Vous travaillerez pour cette étape dans le répertoire partie2/.

Comme pour l'étape précédente, le prototypage des méthodes et la déclaration des attributs se trouveront dans un fichier avec l'extension .hpp tandis que leurs définitions se trouveront dans un fichier avec l'extension .cpp.

L'énoncé du projet est conçu de sorte à ce que votre projet puisse compiler avec le fichier CMakeLists.txt fourni dans le dossier src/partie2. Pour assurer la compatibilité de vos classes avec les fichiers de tests fournis, il faudra donner à vos fichiers le même nom que les classes qu'ils contiennent. Par exemple, la classe Animal sera codée dans les fichiers Animal.[hpp][cpp]

Il faudra procéder de la sorte tout au long du projet.

(si vous n'optez pas pour ce choix, il faudra adapter par vous-même les fichiers de test fournis).

Description générale des classes à produire

Avant de simuler des lézards ou des scorpions, nous allons commencer par modéliser des animaux plus abstraits uniquement capables de :

Les notions que nous devrons modéliser pour parvenir à cet objectif sont donc évidemment  :

  1. des animaux (qui ne ressemblent pas encore à quelque chose de très concret);
  2. un environnement (l'« écosystème » où les animaux évolueront), ce sera un support "torique" visualisé comme un simple plan .

Nous commencerons par modéliser les animaux au moyen d'un automate très abstrait (le ChasingAutomaton, uniquement capable de se diriger vers une cible).

L'élément le plus important sera la mise en oeuvre de l'algorithme de déplacement qui devra faire faire à vos animaux des promenades aléatoires dans leur environnement.

A cette étape vous commencerez à utiliser vos premières applications graphiques. Une classe Application.[hpp][cpp] est fournie; elle servira de base à tous vos tests de simulation graphiques.

Voici, pour résumer, l'architecture à laquelle vous devrez aboutir au terme de cette étape :

Modele

Procédons donc maintenant au début du codage. Dans votre programme, vous veillerez à encapsuler proprement vos classes, notamment en ne donnant pas d'accès public à vos attributs. Vous fournirez aussi systématiquement les destructeurs.

Les descriptions qui vous sont suggérées ci-dessous sont minimales. Il s'agit d'une première ébauche que nous serons amenés à affiner au fur et à mesure que le projet progressera. Libre à vous également d'y ajouter par la suite les méthodes et attributs supplémentaires qui vous semblent nécessaires.

Modules à programmer

Les volets (modules) à mettre en place pour finaliser cette étape sont les suivants :

Ces différents volets ne sont pas tous de même difficulté ni longueur. Prenez connaissance de chacun d'eux avant de vous lancer dans la programmation de cette étape. Notez que le volet 3 constitue l'essentiel de la difficulté de cette étape.

Au terme de cette étape vous disposerez d'un environnement de simulation où vous pourrez ajouter des animaux. Ces derniers s'y promeneront au hasard, et si une cible entre dans leur champ de vision, ils s'y dirigeront :

← le champ de vision est visualisé en clair ici
[Video : déplacement aléatoire d'un animal
avec champ de vision et cible]

Retour au document principal