/ecosystem

Ecosystem simulation in C++

Primary LanguageC++

Simulation d'un écosystème en C++

Ce projet est une simulation en C++ d'un écosystème basique, où des lapins et des renards évoluent.

Simulation

Installation

Ce projet utilise la librarie graphique SFML. Pour installer SFML sur Linux :

sudo apt-get install libsfml-dev

Pour les autres OS, voir la documentation ici.

Pour créer l'exécutable, il suffit d'entrer la commande make.

Lancement

Il suffit de lancer l'exécutable ecosystem.out créé par la commande make :

./ecosystem.out

La fenêtre du simulateur doit apparaître. Pour lancer la simulation, pressez la touche Enter.

Commandes

Voici les commandes de l'application :

  • Enter : démarrer la simulation
  • Space : mettre la simulation sur pause
  • Right arrow : accélérer la simulation par 2
  • Left arrow : ralentir la simulation par 2
  • S : afficher/masquer les statistiques

Fonctionnement

  • Les animaux sont représentés par des cercles. Les lapins correspondent aux cercles gris et les renards aux cercles oranges. Au début de la simulation, les animaux sont placés aléatoirement sur la fenêtre. Ils débutent avec 1000 points de vie.

  • De plus, une certaine quantité de nourriture est répartie sur la fenêtre. La nourriture est aussi représentée par un cercle.

  • À chaque régénération de la fenêtre (voir framerate), les animaux se déplacent pseudo-aléatoirement en utilisant le bruit de Perlin (Perlin noise). Leurs points de vie diminuent d'un point par déplacement.

  • Deux entités interagissent entre elles lorsque les cercles qui les représentent se superposent. Voici les interactions entre les entités :

    • Quand un lapin rencontre de la nourriture, le lapin mange la nourriture. La nourriture est régénérée à un autre endroit de la fenêtre et le lapin régénère ses points de vie à la valeur de départ.
    • Quand un renard rencontre un lapin, le renard mange le lapin. Le renard régénère ses points de vie, et le lapin disparaît.
    • Quand un lapin rencontre un autre lapin, un nouveau lapin naît avec une certaine probabilité (définie à 0.3).
    • Quand un renard rencontre un autre renard, un nouveau renard naît avec une certaine probabilité (définie à 0.3).
    • Quand un animal n'a plus de points de vie, il meurt et disparaît de la fenêtre.

Personnalisation

Les paramètres de la simulation peuvent être modifiés en changeant les valeurs du fichier src/constants.hpp.

Statistiques

Vous pouvez voir les statistiques de la simulation en haut de la fenêtre :

  • Le temps en secondes
  • La vitesse de la simulation
  • Le nombre actuel de lapins
  • La nombre actuel de renards
  • Le nombre total de nourritures mangées par les lapins
  • Le nombre total de lapins tués par les renards
  • Le nombre de lapins nés
  • Le nombre de renards nés

Le mot Paused s'affiche si la simulation est sur pause.

À la fin de la simulation, un graphique apparaît montrant l'évolution du nombre de lapins et de renards en fonction du temps. Celui-ci est généré grâce à pbPlots.

Graph

Tâches

  • Créer la fenêtre de simulation
  • Définir les classes pour les animaux
  • Gérer le déplacement des animaux
  • Définir la classe pour la nourriture
  • Gérer les interactions entre les entités
  • Ajouter sur la fenêtre les statistiques de la simulation (nombre d'animaux, timer)
  • Gérer la customisation de la simulation
  • Pouvoir faire pause, accélérer, ralentir la simulation
  • Pouvoir générer un graphe de la simulation avec le nombre d'animaux en fonction du temps

UML

UML

Documentation

La documentation du projet peut être générée automatiquement grâce à Doxygen. Entrez la commande suivante :

make docs

La documentation s'ouvre automatiquement sur votre navigateur par défaut. Pour nettoyer les fichiers de documentation, entrez :

make cleandocs

Références

Auteur

Quentin Deschamps