---
# System prepended metadata

title: Untitled

---

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