Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    simulation d'un robot dans un labyrinthe
    Bonjour! je suis un débutant en programmation en c et j'ai pour projet: "simulation d'un robot dans un labyrinthe". Je suis parvenu à réaliser le labyrinthe mais je coince au niveau de l'affichage du robot dans le labyrinthe et à son déplacement dans ce labyrinthe.
    Le robot devra avoir ces différents aspects suivant son déplacement dans le labyrinthe : "<",">","v","^", désignant respectivement "gauche", "droite", "bas", "haut"
    et doit être muni de trois capteur permettant de savoir s'il fait face à un obstacle ou non.
    Je voudrais solliciter dans la mesure du possible un code effectuant cela!!
    Merci d'avance!!!!

  2. #2
    Expert éminent sénior
    Bonjour

    Citation Envoyé par DebutantProg Voir le message
    Je voudrais solliciter dans la mesure du possible un code effectuant cela!!
    Demandé très poliment... mais cela ne change rien. C'est contraire aux règles du forum (paragraphe IV.N). Tu veux un code pour le donner à ton prof et avoir une bonne note ou un code pour le tavailler et le comprendre ?

    Citation Envoyé par DebutantProg Voir le message
    Je suis parvenu à réaliser le labyrinthe mais je coince au niveau de l'affichage du robot dans le labyrinthe et à son déplacement dans ce labyrinthe.
    Peut-être parce que tu as commencé par réaliser l'affichage du labyrinthe sans penser qu'il faudrait afficher le robot.
    Le plus simple, c'est
    1. positionner le robot dans une image mémoire du labyrinthe (une sorte de tableau de char [][] qui aurait par exemple '0' pour vide, '1' pour mur et 'G', 'D', 'H' et 'B' pour robot gauche, robot droite, robot haut, robot bas)
    2. afficher ensuite cette image à l'écran.

    Ensuite, quand le robot se déplace, tu changes sa position dans le tableau, tu effaces tout et tu réaffiches tout. Ce sera saccadé mais ça fonctionnera...

    Citation Envoyé par DebutantProg Voir le message
    et doit être muni de trois capteur permettant de savoir s'il fait face à un obstacle ou non.
    Pourquoi 3 ??? Un capteur suffit pour détecter un obstacle devant soi non ???
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  3. #3
    Nouveau Candidat au Club
    En fait il doit etre capable de détecter des obstacles à gauche et à droite également

    Je me suis mal fait comprendre alors, mon intention n'est pas de prendre le code l'utiliser pour gagner des points mais plutôt le comprendre entièrement, j'ai même commencé le programme et je l'ai souligné

  4. #4
    Expert éminent sénior
    Citation Envoyé par DebutantProg Voir le message
    En fait il doit etre capable de détecter des obstacles à gauche et à droite également
    En théorie 3 capteurs c'est inutile pour 2 raisons
    1. si ton programme gère à la fois le labyrinthe, et à la fois le robot, alors le robot connait toujours son environnement (il lui suffit de regarder "où je suis" et "que me dit la map")
    2. imaginons maintenant un robot qui soit isolé (tu fais en sorte qu'il ne connaisse pas la map), alors à l'entrée du labyrinthe il lui suffit de coller sa main gauche sur un mur et partir tout en laissant la main collée au mur. Fatalement il arrivera à un moment ou à un autre à la sortie (algorithme de la main gauche, qui fonctionne aussi avec la main droite)

    Donc dans le premier cas, pas besoin de capteur, et dans le second cas, un capteur à gauche (ou à droite) et un devant (pour détecter un coude) suffit. Le 3° capteur n'est pas nécessaire (il peut juste lui permettre de détecter un cul de sac plus rapidement car si bloqué de 3 côtés alors demi-tour, chose qui se fait aussi avec seulement 2 capteurs mais en 2 étapes). Et même on peut faire le truc avec un seul. Suffit qu'à chaque pas en avant, il se tourne à gauche voir s'il longe toujours le mur puis revienne à droite pour avancer d'un nouveau pas. C'est comme ça que j'ai programmé l'algorithme universel dont je parle ici avec un robot qui ne possède qu'un seul capteur.

    Citation Envoyé par DebutantProg Voir le message
    Je me suis mal fait comprendre alors, mon intention n'est pas de prendre le code l'utiliser pour gagner des points mais plutôt le comprendre entièrement
    Alors tu pourras étudier le corrigé du prof.

    Citation Envoyé par DebutantProg Voir le message
    j'ai même commencé le programme et je l'ai souligné
    Ah si tu l'as souligné alors ça change tout !
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  5. #5
    Membre expérimenté
    Pour expliciter les remarques de Sve@r, sur ce forum on ne fera pas le travail à ta place, par contre si tu as des questions spécifiques sur un point précis on pourra te guider vers une solution.

    Sur le long terme c'est rentable pour toi car ça te force à comprendre par toi même la solution, tu pourras alors être plus autonome par la suite.

    Donc reviens nous voir avec un code. Dis nous ce que tu as tenté, ce qui ne marche pas et éventuellement quelles sont tes pistes pour résoudre ce problème. Nous nous ferons alors un plaisir de t'aider.

    Bon courage.

  6. #6
    Membre éclairé
    Labyrinthe
    Bonjour,

    Le principe de la main droite ou gauche est excellent. Cependant il suppose que le robot est placé à l'entrée du labyrinthe (pas de parachutage) ou qu'il n'y a pas d'ilôts (des portions de labyrinthe isolées de la clôture). Si la main directrice est sur le mur d'un ilôt, la balade durera une éternité. Et c'est long, surtout vers la fin

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #7
    Expert éminent sénior
    Citation Envoyé par Guesset Voir le message
    Le principe de la main droite ou gauche est excellent.
    Je l'ai appliqué dans le jeu "Assassins Creed III". A certains passages du jeu, on se retrouve dans des souterrains et on doit allumer toutes les lampes situées sur les murs. J'ai donc parcouru tous les souterrains en longeant le mur gauche et en allumant chaque lampe située à ma gauche quand j'en croisais une. Quand je me retrouvais au point de départ je savais que toutes les lampes avaient été obligatoirement allumées.

    Citation Envoyé par Guesset Voir le message
    Cependant il suppose que le robot est placé à l'entrée du labyrinthe (pas de parachutage)
    Oui, c'était insinué quand j'ai commencé ma phrase par "alors à l'entrée du labyrinthe...". S'il est parachuté ça marchera aussi mais seulement à condition qu'il ne commence pas son cheminement sur un ilôt éventuel dont tu as aussi parlé.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site