TP Fourmi : Etats de fourmi

mardi 16 novembre 2021
par  Emmanuel Adam
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.

  1. /**active les actions de la fourmi selon son etat*/
  2. public void evoluer()
  3. {
  4.   Cellule[][] grille = terrain.getGrille();
  5.   switch(etat)
  6.   {
  7.       case CHERCHER: //recherche de nourriture
  8.           //s'orienter vers la case offrant le plus de nourriture, sinon le plus de phéromone, sinon au hasard devant
  9.           direction = getBestDirection();
  10.           bougerVersDirection(); // avancer si possible
  11.           // si on trouve de la nourriture, on passe a l'etat suivant
  12.           if(grille[x][y].getNourriture()>0)  etat = EtatFourmi.PRENDRE;
  13.           break;
  14.        case PRENDRE:
  15.           // la foumi prend une dose de nourriture dans la cellule
  16.           grille[x][y].oterNourriture(doseNourriture);
  17.           direction = Direction.getInverse(direction);// elle fait demi tour
  18.           bougerVersDirection(); // avance
  19.           etat = EtatFourmi.REVENIR; // et passe a l'etat suivant
  20.           break;
  21.        case REVENIR:
  22.           // la foumi depose une goute de plus en plus petite de pheromone
  23.           if(dosePhero>0) grille[x][y].setPheromone(dosePhero--);
  24.           direction = getBestDirectionNid(); // elle s'ortiente vers la cellule ayant la plus forte odeur de nid
  25.           bougerVersDirection(); // et avance
  26.           // si elle est dans le nid, elle passe a l'état suivant
  27.           if (grille[x][y].isNid())  etat = EtatFourmi.DEPOSER;
  28.           break;
  29.       case DEPOSER:
  30.           // la fourmi regenere sa dose de pheromone
  31.           dosePhero = Fourmi.dosePheroMax;
  32.           direction = Direction.getInverse(direction); //la fourmi fait demi-tour
  33.           direction = getBestDirection();// recherche la meilleure direction
  34.           bougerVersDirection();// et avance
  35.           etat = EtatFourmi.CHERCHER; // elle passe a l'état suivant
  36.           break;
  37.       }
  38. }

Passer à la suite