Vous êtes sur la page 1sur 2

Langage C TP n°4

TP N°4 / Labyrinthe et robot

1. Problème

On cherche à simuler le déplacement d'un robot dans un labyrinthe. Ce robot est identifié par
sa position en x et y, et sa direction courante (à choisir parmi les quatre suivantes :
← ↑ → ↓. Pour sortir du labyrinthe, le robot mettra en oeuvre, à chaque étape de
son déplacement, l'algorithme ci-dessous :

1. Tourner d'un quart de tour à gauche ;

2. Tant qu'il y a un mur dans la direction testée, tourner d'un quart de tour à droite.

3. Avancer d'un pas (une case du labyrinthe) dans la direction trouvée.

2. Programmation

Le but principal du TP étant de vous faire écrire des fonctions, votre programme devra
comporter les fonctions dont les prototypes sont les suivants1 :

void dessine(ROBOT *); procédure qui dessine le labyrinthe et le robot


int a_gauche(int ); fonction qui renvoie la direction située un quart de tour à
gauche de la direction passée en argument
nt a_droite(int ); fonction qui renvoie la direction située un quart de tour à
droite de la direction passée en argument
void tourneRobot(ROBOT *); procédure qui positionne le robot passé en argument
dans la prochaîne "bonne" direction
void avanceRobot(ROBOT *); procédure qui avance le robot passé en argument d'une
case dans le labyrinthe
void initRobot(ROBOT *); procédure qui place le robot passé en argument sur la
case correspondant à l'entrée du labyrinthe
int sortieAtteinte(ROBOT *); fonction qui indique si le robot passé en argument a
atteint la case de la sortie, ou non
void deplaceRobot(ROBOT *); procédure qui assure le déplacement complet du
robot passé en argument

1vous pouvez rajouter d'autres des fonctions si vous avez besoin.

Jean-Luc Damoiseaux / I.S.I.T.V. 1


Langage C TP n°4

Comme vous pouvez le voir, toutes ces fonctions font référence au type de données ROBOT
dont la définition est la suivante :
struct robot
{
int x,y,dir;
};
typedef struct robot ROBOT;

Enfin, vous coderez le labyrinthe au moyen d'un tableau à deux dimensions : une case remplie
avec un 1 symbolisant un mur, et une case remplie avec un 0 étant vide. La position du robot
correspondra à sa postion dans la matrice.

Travail à faire

Dans un premier temps, vous devez écrire l'ensemble des fonction demandées. Puis, vous
rajouter les lignes de codes nécessaires à la sauvegarde dans un fichier texte, du labyrinthe et
du chemin emprunté par le robot. Bon courage...

Jean-Luc Damoiseaux / I.S.I.T.V. 2

Vous aimerez peut-être aussi