TP Fourmi : Etats de fourmi
mardi 16 novembre 2021
par
popularité : 3%
par
popularité : 3%
Décrire le type énuméré EtatFourmi qui comprend les termes CHERCHER, PRENDRE, REVENIR, DEPOSER.
Une fourmi a un lien vers une matrice de cellules
Voici la fonction evoluer() de la classe fourmi.
Cette méthode est appelée à chaque intervalle de temps, et lance les traitements associés à l’état de la fourmi.
Vous décrirez les méthodes appelées.
- /**active les actions de la fourmi selon son etat*/
- public void evoluer()
- {
- Cellule[][] grille = terrain.getGrille();
- switch(etat)
- {
- case CHERCHER: //recherche de nourriture
- //s'orienter vers la case offrant le plus de nourriture, sinon le plus de phéromone, sinon au hasard devant
- direction = getBestDirection();
- bougerVersDirection(); // avancer si possible
- // si on trouve de la nourriture, on passe a l'etat suivant
- if(grille[x][y].getNourriture()>0) etat = EtatFourmi.PRENDRE;
- break;
- case PRENDRE:
- // la foumi prend une dose de nourriture dans la cellule
- grille[x][y].oterNourriture(doseNourriture);
- direction = Direction.getInverse(direction);// elle fait demi tour
- bougerVersDirection(); // avance
- etat = EtatFourmi.REVENIR; // et passe a l'etat suivant
- break;
- case REVENIR:
- // la foumi depose une goute de plus en plus petite de pheromone
- if(dosePhero>0) grille[x][y].setPheromone(dosePhero--);
- direction = getBestDirectionNid(); // elle s'ortiente vers la cellule ayant la plus forte odeur de nid
- bougerVersDirection(); // et avance
- // si elle est dans le nid, elle passe a l'état suivant
- if (grille[x][y].isNid()) etat = EtatFourmi.DEPOSER;
- break;
- case DEPOSER:
- // la fourmi regenere sa dose de pheromone
- dosePhero = Fourmi.dosePheroMax;
- direction = Direction.getInverse(direction); //la fourmi fait demi-tour
- direction = getBestDirection();// recherche la meilleure direction
- bougerVersDirection();// et avance
- etat = EtatFourmi.CHERCHER; // elle passe a l'état suivant
- break;
- }
- }