```cpp #include <iostream> #include "termite.hpp" using namespace std; Direction directionTermite(Termite t){ return t.d; } Coord devantTermite(Termite t){ return devantCoord(t.c, t.d); } void tourneAGauche(Termite &t){ t.d=aGauche(t.d); } void tourneADroite(Termite &t){ t.d=aDroite(t.d); } void tourneAleat(Termite &t){ short n=rand()%2; if (n==0){ t.d=aGauche(t.d); return; } t.d=aDroite(t.d); } bool laVoieEstLibre(Grille g, Termite t){ if(dansGrille(g,devantTermite(t))) return (estVide(g, devantTermite(t))); return false; } bool brindilleEnFace(Grille g, Termite t){ if(dansGrille(g,devantTermite(t))) return (contientBrindille(g, devantTermite(t))); return false; } bool pasEnferme(Grille g, Coord c){ int vide=0; Direction dirPE; //DirectionPasEnferme for(short i=0; i<8; i++){ dirPE=Direction(i); if(estVide(g, devantCoord(c, dirPE))) //compte le nombre de cases vides vide++; } if(vide<7) return 0; return 1; } void avanceTermite(Grille &g, Termite &t){ enleveTermite(g, t.c); t.c = devantTermite(t); poseTermite(g, t.c, t.idT); } void dechargeTermite(Grille &g, Termite &t){ Coord devant=devantCoord(t.c, t.d); if(estVide(g, devant)){ t.brin=0; poseBrindille(g, devant); } } void chargeTermite(Grille &g, Termite &t){ Coord devant=devantCoord(t.c, t.d); if(contientBrindille(g, devant)){ t.brin=1; enleveBrindille(g, devant); } } void marcheAleatoire(Grille &g, Termite &t) { int proba=rand()%10; if (laVoieEstLibre(g, t) and proba<8) avanceTermite(g, t); else tourneAleat(t); }