INF220 - TP Séance 6

Durée : 2h00




Objectifs




Au menu

  1. Consignes
  2. Dessin du labyrinthe
  3. Parcours du labyrinthe

Lisez attentivement cet énoncé de TP en suivant les instructions. En cas d'interrogation, faites appel à moi, que ce soit pour en savoir plus sur un des points abordés pendant le TP, ou pour savoir comment effectuer une des tâches demandées (numérotées pour pouvoir y faire référence simplement).

Surtout ne restez pas bloqué(e) sur une des questions. Entre parenthèses, à côté des titres de sous-sections, est indiqué le temps que vous avez dû passer à effectuer les étapes précédentes.

On cherche à dessiner le labyrinthe montré dans le dessin ci-dessous.
Labyrinthe

Téléchargez et compilez le fichier INF220TP6.java. Allez voir dans le code de la fonction paint comment le tableau de tableaux d'entiers laby est créé.

On va écrire une fonction dessineLigneLabyrinthe qui va permettre de dessiner une ligne de cases du labyrinthe. Cette fonction prend en entrée un objet Graphics g, un tableau d'entiers tab (qui contient des 0, des 1, des 2 ou des 3), et un entier hauteur, qui indique à quelle hauteur se situe la ligne à dessiner. Elle ne renvoie rien en sortie.

Écrivez la ligne de déclaration de la fonction dessineLigneLabyrinthe. Pour savoir ce que doit faire la fonction dessineLigneLabyrinthe, prenons un exemple : si l'on veut dessiner la quatrième ligne du labyrinthe (voir copie d'écran ci-dessous), comme les cases d'un tableau sont numérotées à partir de 0 en Java, il faut donner en paramètre de dessineLigneLabyrinthe (pour le paramètre tab) la case numéro 3 du tableau de tableaux laby, c'est-à-dire laby[3] (laby[3] est le tableau d'entiers {1,0,1,0,0,0,0,1}). Comme les cases font 10 pixels de haut, la case la plus à gauche de cette ligne sera dessinée à l'abscisse 0 et à l'ordonnée 30 : le paramètre d'entrée hauteur aura donc la valeur 30 dans ce cas.
4° ligne du labyrinthe



Ecrivez la fonction dessineLigneLabyrinthe en vous aidant des réponses que vous venez d'écrire dans le formulaire ci-dessus. On rappelle les fonctions utiles pour ce TP : Ecrivez dans la fonction paint un appel de la fonction dessineLigneLabyrinthe afin de dessiner la troisième ligne du labyrinthe.

Modifiez le code de la fonction paint pour dessiner toutes les lignes du labyrinthe.
Indication : comme vous avez besoin de répéter le dessin d'une ligne du labyrinthe, il faut utiliser une boucle, et à chaque fois appeler dessineLigneLabyrinthe avec les bons paramètres. L'objectif de cette partie est de parcourir le labyrinthe en partant des cases vertes en haut à gauche, jusqu'à atteindre la case rouge en bas à droite. A chaque fois qu'une case est parcourue, on la colore d'une couleur verte qui tend de plus en plus vers le rouge. L'objectif est donc d'aboutir à l'image suivante, qui montre le parcours du labyrinthe :
Labyrinthe parcouru

Pour cela, vous allez créer une fonction récursive parcourtLabyrinthe qui prend en entrée un objet Graphics g, un tableau de tableaux d'entiers laby, deux entiers numeroHorizontal et numeroVertical qui indiquent sur quelle case du labyrinthe on se trouve (au début, on se trouve sur la case blanche juste à droite de la case verte du bas, c'est-à-dire que numeroHorizontal vaut 1, et numeroVertical vaut 1), et enfin un entier energie, qui va permettre de choisir la bonne couleur (vert au début, et rouge à la fin : energie vaudra 255 au début du parcours du labyrinthe, et sera diminué progressivement au fur et à mesure du parcours).

Ecrivez le code de l'algorithme parcourtLabyrinthe. Appelez-le depuis la fonction paint pour obtenir l'image attendue.