Projet : étape 6
Extensions

But: Mettre en oeuvre des extensions libres (optionnel).

Il existe toute sorte d'extensions possibles au projet. Quelques pistes vous sont données en vrac dans ce qui suit en guise de source d'inspiration. Libre cours à votre imagination. Toute «jolie» (intellectuellement ou visuellement) extension non triviale de votre travail est bienvenue !

Aucun matériel n'est fourni pour cette étape. Si vous l'abordez, vous veillerez à placer le code correspondant dans un nouveau répertoire partie6 de sorte à garder intacte la partie obligatoire du projet dans partie5.

Introduction d'obstacles

On peut imaginer d'introduires des obstacles (de simples corps circulaires pour commencer). Les obstacles peuvent permettre de créer des zones autonomes dans les boites de culture où telle ou telle catégorie de bactéries pourrait évoluer en autarcie par exemple.

Il s'agira de :

Interactions entre bactéries

Le projet, tel que développé jusqu'ici, ne gère pas d'interactions entres les bactéries. Vous pouvez y remédier en introduisant des interactions : Il s'agira dans les deux cas d'introduire un nouveau type de bactéries dont la représentation et les caractéristiques sont laissées à votre libre choix pour ce qui est des divisions, mutations, etc. Quelques indications sur les problématiques à traiter sont données ci-dessous.

Interactions indirectes

Si l'on prend l'exemple de bactéries lâchant du poison, il s'agira de se pencher sur les questions suivantes  :

On peut par exemple considérer que la quantité de poison lâchée à un endroit est similaire à une source de nutriments (avec perception du gradient par les bactéries) qui pourront alors être impactées dans leur niveau d'énergie et/ou adopter un comportement de fuite.

Interactions directes

On peut introduire une nouvelle catégorie de bactéries causant des dommages aux autres (voir ces exemples ou ceux-ci). Il s'agira alors :

Les problèmes principaux qui se poseront alors seront les suivants:

  1. Identifier les bactéries du voisinage peut-être coûteux (cela implique potentiellement de balayer à chaque fois toute la collection de bactéries !).
  2. Si des interactions différenciées sont gérées (la bactérie agressive n'agresse pas ceux de son type mais les autres au certaines autres et peut-être pas toutes de la même façon). Comment procéder sans recourir au test de type?

Un réalisation informatique soignée pourra apporter des réponses adéquates à ces questions :

Simulation avec points de reprise

Il est intéressant de pouvoir sauvegarder l'état d'une simulation (nombres et type de bactéries ainsi que leurs caractéristiques, nutriments présents etc.) pour pouvoir la relancer dans le même état plus tard.

L'idée est de stocker les données caractérisant la simulation dans un fichier en format json afin de pouvoir relancer la simulation sur la base de ce fichier plus tard. Il faudra pour cela étudier les fonctionnalités offertes par les fichiers JSON/JSONSerialiser.[hpp][cpp]

Il faudra également compléter la classe Application en y ajoutant la gestion de nouvelles touches ainsi que des fonctionnalités permettant la mise en oeuvre de la simulation avec points de reprise.

Autres pistes encore ...

De nombreuses possibilités existent encore, en vrac quelques unes:


Retour au document principal