Projet : étape 3
«Cycles de vie»

But: Simuler le cycle de vie complet des lézards et des scorpions (consommation de nourriture, reproduction, prédation, fuite et mort).

Au terme de cette étape, les fonctionnalités nécessaires à visualiser la dynamique des populations seront toutes mises en oeuvre.

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


Mise en place

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

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

Description générale des classes à produire

Les animaux que nous avons programmé, vont, à cette étape, se décliner en deux formes plus concrètes : des lézards et des scorpions.

Nous allons également introduire des cactus dont les lézards vont se nourrir.

Par ailleurs, l'environnement était vu jusqu'ici comme un ensemble d'animaux et de cibles. Il est clair que la notion de cible doit maintenant évoluer : un lézard est une cible pour un scorpion mais pas l'inverse, par exemple.

Il semble donc judicieux de réviser un peu notre conception de sorte à voir l'environnement comme un ensemble d'entités organiques/êtres vivants, OrganicEntity, dont certaines sont des cibles pour les autres (nourriture, partenaire pour la reproduction etc.).

Certaines de ces entités seront mobiles (les animaux) et d'autres statiques (les cactus).

Pour les entités mobiles, il faudra se préoccuper de gérer leurs rencontres. Si une entité croise le chemin d'une autre (collision), il pourra y avoir prédation ou reproduction, par exemple. La classe Collider, codée dans la première partie du projet, va être mise à profit pour faire des tests de collision.

Pour permettre aux végétaux de croître, quelques éléments rudimentaires de météo seront introduits (épisodes pluvieux). Des nuages feront leur apparition (classe Cloud). Une classe utilitaire CloudGenerator permettra de les générer aléatoirement.

Voici, pour résumer, l'essentiel de 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 et notamment de ne pas donnant d'accès publics à vos attributs. Vous vous préoccuperez aussi systématiquement des destructeurs.

Modules à programmer

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

Les étapes 1 et 2 constituent l'essentiel du travail et vous permettront de construire la quasi-totalité de l'architecture de votre projet.

Leurs énoncés sont longs car ils comportent beaucoup d'explications/questions, mais leur mises en oeuvre n'impliquent pas d'écrire beaucoup de lignes de code ni des algorithmes sophistiqués. Il devient cependant impératif de bien modulariser vos méthodes.

Avant de vous lancer dans le codage, veillez à bien comprendre les développements qui vous sont suggérés : ne codez pas en suivant ligne par ligne l'énoncé mais commencez par le lire en entier (pour chaque partie) et faites des petits schémas de votre architecture en plaçant attributs et méthodes aux bons endroits, par exemple.

Au terme de cette étape, les fonctionnalités nécessaires à simuler la dynamique des populations seront toutes présentes (courbes statistiqes exclues):

[Video : Simulation prédateurs/proies]


Retour au document principal