M1202 - TP Séance 2

Durée : 2h00




Objectifs




Au menu

  1. Cours
  2. Consignes
  3. Compréhension d'un code en Java
  4. Dessin d'un échiquier

Rappels


Nous avons vu précédemment :

Nouveautés


Nous allons aujourd'hui utiliser les éléments suivants :

Quizz


Pour bien retenir les éléments ci-dessus, allez répondre à ce quizz. Afin de m'aider à évaluer votre avancement lors de ce TP, vous devrez enregistrer vos réponses aux questions C5, C7, C8, C9, C13 (et si vous avez le temps, D1, D2 et D3) dans un fichier texte (comme indiqué aux questions C2 et C3). Vous m'enverrez ce fichier par mail à philippe.gambette<AROBASE>univ-mlv.fr, à la fin du TP.

Lisez attentivement cet énoncé de TP/TD 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).

Attention, lors de ce TP il sera particulièrement indispensable d'utiliser un crayon et une feuille de papier pour faire des dessins et visualiser ou calculer des coordonnées.

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.

Créez un dossier dédié à ce TP2 (de la même manière que vous en aviez créé un dédié au TP1).

Enregistrez-y ce fichier TP2.java et ce fichier TP2reponses.txt. Renommez le fichier TP2reponses.txt en "VotreNom".txt. Vous y inscrirez les réponses aux questions dont le numéro est indiqué dans le fichier.

Nous allons nous concentrer sur le code de l'algorithme paint, situé des lignes 11 à 35, qui dessine des objets en faisant appel aux algorithmes suivants : Notons en lisant les variables en entrée de ces algorithmes que nous n'avons pas encore rencontré le type Graphics, qui est un type d'objet sur lequel on fait des dessins. De plus, nous n'avons pas encore rencontré en Java (seulement en cours) le type Color qui sert à exprimer une couleur.

Remarquez aussi qu'à la ligne 24, on utilise la chaîne de caractères "//" pour indiquer que ce sont des commentaires qui suivent. Ainsi Java n'essaiera pas de compiler/exécuter la fin de la ligne.

Compilez TP2.java puis exécutez le programme. Qu'est-ce qui est dessiné par le programme ?

En vous inspirant de la façon dont la couleur rouge a été créée, définissez une couleur grise, que vous stockez dans une variable appelée gris. Utilisez-la pour recolorer le toit en gris : quelle(s) ligne(s) ajoutez-vous ou modifiez-vous dans le programme pour faire cela ? Testez-le pour vérifier que ça fonctionne.

Où se trouve le point de coordonnées (0,0) dans la fenêtre créée par le programme ? En haut à gauche, en haut à droite, en bas à gauche, en bas à droite, ou au milieu ? Comment avez-vous fait pour répondre à cette question ?

Dans les questions qui suivent, il sera utile de reproduire le dessin sur un papier et y indiquer les coordonnées de quelques points de référence : cela vous aidera à ajouter les éléments suivants au dessin.

Modifiez le programme pour que les murs de la maison soient blancs (attention, ils ne doivent pas être transparents, l'intérieur des murs doit être entièrement blanc).

Ajoutez un sol vert au premier plan.

Ajoutez un ciel bleu clair à l'arrière plan.

Copiez le code obtenu pour l'algorithme paint vers l'intérieur du fichier "VotreNom".txt.

Question bonus (quand vous aurez fini la partie D ci-dessous) : écrivez un nouvel algorithme remplitRectangle qui prend les mêmes entrées que dessineRectanglePlein, avec une variable d'entrée supplémentaire couleurInterieur de type Color. Cet algorithme dessinera un rectangle plein dont la couleur de la bordure est couleur, et dont la couleur de l'intérieur est couleurInterieur. Cet algorithme ne doit faire appel qu'aux algorithmes dessineRectangle et couleurRGB : il faut donc trouver une stratégie pour remplir un rectangle en le couvrant de plusieurs rectangles vides. Dans la suite, si vous avez un nom (ou un prénom) de plus de 10 caractères, utilisez la valeur 10 quand on évoque la longueur de votre nom (ou de votre prénom).

Vous allez maintenant effacer l'intérieur de l'algorithme paint et y écrire un code permettant d'afficher un échiquier contenant autant de lignes et de colonnes que le nombre de lettres de votre prénom, et dont chaque case (avec une alternance cases noires, cases blanches, comme sur un échiquier) fait autant de pixels de côté qu'il y a de lettres dans votre nom.

Pour cela, commencez par dessiner une case blanche à côté d'une case noire, aux dimensions voulues. Utilisez ensuite une boucle et une variable compteur pour dessiner une ligne de cases noires et blanches alternées, avec le nombre voulu de cases dans la ligne.

Astuce : vous pouvez utiliser le test de parité, à programmer à l'aide de l'opération "reste modulo" ("%" en Java).

Utilisez une autre boucle (et un autre compteur ? ou bien un nouvel algorithme ?) pour dessiner l'ensemble des lignes de l'échiquier demandé. Attention, l'alternance des couleurs noir/blanc doit aussi être respectée verticalement.