Correction
#include <stdio.h>
#define ROWS 10
#define COLS 10
void initGrille(char grille[ROWS][COLS], int robotX, int robotY) {
for (int i = 0; i < ROWS; i++)
for (int j = 0; j < COLS; j++)
grille[i][j] = '.'; // Remplir la grille
// Ajouter quelques obstacles
grille[1][1] = 'X'; grille[3][5] = 'X'; grille[6][7] = 'X';
grille[robotX][robotY] = 'R'; // Placer le robot
}
void afficherGrille(char grille[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++)
printf("%c ", grille[i][j]);
printf("\n");
}
}
void deplacerRobot(char grille[ROWS][COLS], int *robotX, int *robotY, int direction) {
grille[*robotX][*robotY] = '.'; // Retirer l'ancien emplacement
int newX = *robotX, newY = *robotY;
switch (direction) {
case 'H': newX--; break; // Haut
case 'B': newX++; break; // Bas
case 'G': newY--; break; // Gauche
case 'D': newY++; break; // Droite
}
// Vérifier le mouvement
if (newX >= 0 && newX < ROWS && newY >= 0 && newY < COLS && grille[newX][newY] != 'X') {
*robotX = newX; *robotY = newY; // Mettre à jour la position
} else {
printf("Mouvement impossible (obstacle ou hors de la grille).\n");
}
grille[*robotX][*robotY] = 'R'; // Remettre le robot
}
int main() {
char grille[ROWS][COLS];
int robotX = ROWS / 2, robotY = COLS / 2; // Position initiale
initGrille(grille, robotX, robotY);
afficherGrille(grille);
char commande;
while (1) {
printf("\nEntrez une commande (H = haut, B = bas, G = gauche, D = droite, Q = quitter) : ");
scanf(" %c", &commande);
if (commande == 'H' || commande == 'B' || commande == 'G' || commande == 'D') {
deplacerRobot(grille, &robotX, &robotY, commande);
} else if (commande == 'Q') {
break;
} else {
printf("Commande non reconnue.\n");
}
afficherGrille(grille);
}
return 0;
}