Guillaume Rivière 2012 – 2024

Le logo de la CCI Bayonne Pays Basque

Programmation Procédurale en langage C

TP4 - Cas d'étude : Robot traceur (4, 5) - Partie 1

Exercice 4 • Affichage des traces du robot sur une grille

Maintenant que le paquetage « Robot » existe, nous n'allons plus le modifier, mais nous allons le réutiliser pour écrire un nouveau programme.

  1. Faîtes une copie de votre fichier exo3.c de l'exercice précédent dans le nouveau fichier exo4.c.
  2. Ajoutez l'inclusion du fichier dimensions.h au début du fichier (en faisant #include "dimensions.h").
  3. Recopiez dans ce fichier les fonctions d'initialisation et d'affichage de grilles (de l'exercice 2 du TP3).
  4. Déclarez une nouvelle grille de dimensions WIDTH x HEIGHT dans la fonction main(), qui sera ensuite initialisée par la fonction d'initialisation de grilles.
  5. Maintenant, à chaque fois que le robot bot1 avance, la case de la grille correspondant à la position du robot bot1 sera affectée avec la première lettre du nom du robot bot1. Et plutôt que d'appeler la fonction d'affichage du robot, c'est la grille qui sera affichée en appelant la fonction d'affichage de grilles.

Pour utiliser le paquetage « Robot », ce nouveau programme exo4.c sera compilé avec robot.c comme suit :
gcc -Wall -ansi exo4.c robot.c -o exo4.exe

Capture robot sur grille
Figure 4.1

Comme lors de l'exercice 2 du TP3, pour avoir le temps d'observer, faîtes un appel scanf("%*c"); après chaque affichage de la grille (en affichant avant un petit message comme "Appuyer sur la touche ENTREE pour continuer"). Ainsi, le programme attendra qu'une touche soit appuyée pour continuer.

Exercice 5 • Afficher les traces de plusieurs robots sur une grille

Question 5.1

Maintenant six robots vont être créés et se déplacer en même temps. Leur nom, leur position de départ et leur fichier d'instruction seront les suivants :

Nom du robot Position de départ Fichier d'instructions
"Ewall" (4; 2) "instructionsE.txt"
"Swell" (9; 2) "instructionsS.txt"
"Tiger" (10; 2) "instructionsT.txt"
"Ipade" (17; 2) "instructionsI.txt"
"Astra" (24; 7) "instructionsA1.txt"
"Astro" (27; 7) "instructionsA2.txt"
  1. Faîtes une copie de votre fichier exo4.c de l'exercice précédent dans le nouveau fichier exo5.c.
  2. Plutôt que d'avoir un seul robot, vous allez maintenant déclarer un tableau de 6 robots.
  3. Ajoutez les appels nécessaires pour initialiser les 6 robots (comme décrit dans le tableau ci-dessus).
  4. Modifiez la boucle pour faire avancer à chaque les 6 robots. La grille sera affichée après que les robots aient avancé. La boucle continuera tant qu'au moins 1 robot avance.
  5. N'oubliez pas de procéder à la destruction des 6 robots avant la fin du programme.

Comme dans la capture d'écran ci-après, les robots progresseront en même temps :

Capture plusieurs robots sur grille
Figure 5.1.1
Question 5.2

Maintenant que tout fonctionne, n'hésitez pas à modifier les positions de départ et les fichiers d'instructions de vos robots afin de définir de nouvelles trajectoires.

Question 5.3

Pour ceux qui n'arrivent plus à s'arrêter de coder, vous pouvez encore améliorer votre programme en donnant une couleur spécifique à chaque lettre lors des affichages de la grille. Pour ce faire, inspirez-vous de l'exemple colors.c, que vous compilerez et exécuterez afin d'en comprendre le fonctionnement.

Capture plusieurs robots en couleur sur grille
Figure 5.3.1
Capture plusieurs robots en couleur sur grille
Figure 5.3.2

Exercice 6 • Déjà fini ?

Si vous avez tout terminé et qu'il vous reste du temps, vous pouvez approfondir en allant au bout de l'implantation de l'exercice 4 du TD 4 (le paquetage de matrices). Codez le paquetage sur machine et en écrivez des programmes pour tester vos fonctions au fur et à mesure. Cela vous fera une bonne préparation pour la programmation orientée objet en 2e année et pour les options C++ de 3e année.