Simulateur déplacement d'un robot

Le projet consiste à simuler un robot qui se déplace sur une grille 2D en réponse à des commandes utilisateur (par exemple, avancer, tourner à gauche, tourner à droite). La grille représente l'espace de travail du robot et peut contenir des obstacles. L'objectif est d'écrire un programme en C qui permet à l'utilisateur de piloter le robot en donnant des instructions textuelles, tout en gérant les collisions avec des obstacles.

Fonctionnalités principales

1) Représentation de la grille : La grille est un tableau 2D (par exemple, 10x10 ou 20x20) où chaque case peut être vide, contenir un obstacle, ou le robot. Le robot est représenté par un symbole (par exemple, 'R'), et les obstacles par un autre symbole (par exemple, 'X'). 2) Mouvements du robot : Le robot peut se déplacer dans quatre directions (nord, sud, est, ouest) et peut tourner à gauche ou à droite. Les mouvements incluent : Avancer : Le robot avance d'une case dans la direction actuelle. Tourner à gauche/droite : Le robot change sa direction (sans changer de position). Recule (optionnel) : Le robot recule d'une case dans la direction opposée. 3) Gestion des obstacles : Le robot ne peut pas avancer sur une case qui contient un obstacle. Si une commande le mène vers un obstacle, il doit ignorer cette commande ou signaler une erreur. Commande utilisateur : L'utilisateur entre des commandes via la console pour piloter le robot (par exemple, 'A' pour avancer, 'G' pour tourner à gauche, 'D' pour tourner à droite). Les mouvements sont ensuite simulés et affichés sur la grille mise à jour après chaque commande.

Séance 1 : Mise en place de la grille et déplacement basique

Objectif : Implémenter la grille et les mouvements de base du robot. 1) Initialiser la grille 2D : - Créer une matrice (tableau 2D) qui représente la grille. Chaque case peut être un espace vide (' '), un obstacle ('X'), ou le robot ('R'). - Positionner le robot au centre de la grille ou dans un coin spécifique. - Placer des obstacles à des endroits fixes ou les générer aléatoirement. Utiliser un symbole comme 'X' pour représenter un obstacle. 3) Commandes de déplacement : - Implémenter des fonctions pour que le robot se déplace : void haut(), void Gauche(),void Droite(), void bas() - Avant de faire avancer le robot, vérifier si la case vers laquelle il se dirige contient un obstacle. Si un obstacle est détecté, empêcher le robot de se déplacer et afficher un message d'erreur ou ignorer la commande. 4) Affichage de la grille : - Mettre à jour la grille après chaque mouvement pour que l'utilisateur puisse voir la nouvelle position du robot. - Afficher la grille dans la console après chaque commande pour visualiser la progression.

Séance 1 : Mise en place de la grille et déplacement basique

Correction

 

image.png

image.png

Séance 2 : Optimisation et extension

Objectif : Ajouter des fonctionnalités supplémentaires et améliorer l'expérience utilisateur. Amélioration de l'interface utilisateur : - Ajouter une fonction pour réinitialiser la position du robot. - Permettre à l'utilisateur de choisir la taille de la grille au début du programme. - Ajouter une option pour générer aléatoirement des obstacles ou les positionner manuellement.