```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);
}