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.
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/.
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 :
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.
Les volets (modules) à mettre en place pour finaliser cette étape sont les suivants :
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] |