Voici quelques détails sur le principe et son déroulement.
Wa-Tor est une simulation de type proie-prédateur. Dans une mer torique évoluent des thons et des requins. Les uns et les autres se déplacent et se reproduisent. Pour acquérir l'énergie suffisante à sa survie, un requin doit manger un thon régulièrement. Un thon vit éternellement tant qu'il n'est pas mangé par un requin.
Voici les descriptions des entités présente au sein de cette simulation :
La mer : elle est représentée par une grille à deux dimensions torique. Cela signifie que les bords droits et gauches sont reliés, et que les bords hauts et bas également. Chaque case possède quatre cases voisines, une dans chacune des quatres directions cardinales (N, S, E O) et peut-être soit vide, soit occupée par un thon ou par un requin. Dans cette mer évoluent des thons et des requins. On trouve au maximum un poisson par case.
Les thons : un thon est caractérisé par son temps de gestation. Ce temps est initialisé à une valeur initiale commune à tous les thons au début de la simulation.
Les requins : un requin est caractérisé par son temps de gestation et son énergie. Ces deux valeurs sont initialisées à une valeur initiale commune à tous les requins au début de la simulation.
À chaque tour de la simulation, une case de la mer est sélectionnée aléatoirement. Si elle est vide, il ne se passe rien. Si elle est occupée par un poisson (thon ou requin), on applique alors son comportement.
Le comportement d'un thon peut se résumer en deux actions :
Son déplacement : le thon choisit aléatoirement une case libre parmi ses voisines. S'il en existe une, le thon se déplace vers cette case, sinon, il reste sur place.
Sa reproduction : le temps de gestation du thon est diminué de 1 à chaque tour. Si ce temps arrive à 0, le thon donne naissance à un nouveau thon qui naît sur la case qu'il vient de quitter s'il s'est déplacé, sinon aucun thon ne naît. Le temps de gestation est remis à sa valeur initiale.
Le comportement d'un requin se résumer en trois actions :
Son énergie : le requin perd un point d'énergie à chaque tour. Si le niveau d'énergie du requin est à 0, il meurt. Dans ce cas les étapes suivantes n'ont pas lieu.
Son déplacement : le requin choisit aléatoirement parmi ses voisines une case occupée par un thon. S'il en existe une, le requin se déplace vers forcément sur cette case et mange le thon et son niveau d'énergie est remis à sa valeur initiale. Sinon, il cherche à se déplacer vers une case voisine vide choisie au hasard. Il reste sur place s'il n'y en a aucune.
Sa reproduction : le temps de gestation du requin est diminué de 1 à chaque tour. Si ce temps arrive à 0, le requin donne naissance à un nouveau requin sur la case qu'il vient de quitter s'il s'est déplacé, sinon aucun requin ne naît. Son temps de gestation est remis à sa valeur initiale.
Pour une simulation « réussie » il faut que
temps gestation des thons
<énergie des requins
<durée gestation des requins
. Les valeurs suggérées sont 2, 3 et 5.
Vous allez concevoir et programmer une version de la simulation Wa-Tor en utilisant les principes de la programmation orientée objet (POO). Vous êtes libres dans vos choix de représentation, architecture et conception, tant que les règles du système proie-prédateur sont respectées.
Une étape importante pour bien démarrer un projet est de réfléchir à la modélisation des informations, c’est-à-dire à la manière dont vous allez représenter les différentes entités de votre simulation.
Dans notre cas, il faut s'interroger sur la représentation :
Il n’est pas nécessaire de tout prévoir dès le départ. L’essentiel est de réfléchir à la structure globale et de faire émerger les grandes entités qui interagissent dans votre application.
L’intérêt d’utiliser la POO est de pouvoir faire évoluer facilement votre code au fil des besoins.