Je n'ai pas compris ceci dans la ligne précédente(je pense avoir compris le reste): [perdrez][0] et [perdrez][1]
(j'ai compris à quoi sert perdrez, mais je ne comprend pas où interviennent ces "0" et "1") (j'espère avoir été clair)
int [][] positions est un tableau de positions. Chaque position est représentée par un tableau de deux int : le premier est un numéro de ligne et le second une position de caractère dans la ligne.
int [][] positions = { {1,13}, {2,13}, {3,12}, {3,13}, {3,14}, {4,13}, {5,12}, {5,14}};
On déclare ici la liste de toutes les positions des "segments" du pendu dans l'ordre d'affichage : 1,13 : le premier segment (la corde au dessus de la tête) est en ligne 1, 13
ème caractère. positions est un tableau à 2 dimensions de int.
Un tableau à deux dimensions, c'est un tableau de tableaux.
La variable potence est un StringBuilder, une sorte de chaîne dynamique (on peut ajouter, supprimer, et modifier des caractères, ce qu'on ne peut pas faire avec String).
Dans la ligne :
potence.setCharAt(maxl*positions[Perdrez][0] + positions[Perdrez][1], pr[Perdrez]);
On modifie le caractère de potence situé à une position qu'on calcule avec la formule : maxl*positions[Perdrez][0] + positions[Perdrez][1].
maxl est la taille d'une ligne (on s'est arrangé pour que toutes les lignes contenant des caractères du pendu soient de même longueur, maxl donc),
Perdrez est le numéro d'étape vers la pendaison complète
positions est donc la suite des différentes positions du pendu, dans un ordre correspondant à Perdrez qui s'incrémente à chaque étape (positions[0] c'est la position pour la première étape, positions[1] c'est la position pour la deuxième étape, positions[Perdrez] la position pour l'étape correspondant à Perdrez.
pr[Perdrez] c'est le caractère à mettre à la position correspondant à l'étape.
Rappel : une position pour un étape, c'est un tableau de 2 int, un premier pour la ligne, un second pour le caractère dans la ligne. Donc positions[Perdrez][0], c'est la cellule 0 dans le tableau positions[Perdrez], donc la première, soit le numéro de ligne, et positions[Perdrez][1] c'est la cellule 1 dans le tableau positions[Perdrez], donc la seconde, soit la position du caractère dans la ligne.
int [][] positions = { {1,13}, {2,13}, {3,12}, {3,13}, {3,14}, {4,13}, {5,12}, {5,14}};
Quand Perdrez vaut 0, positions[Perdrez][0] c'est 1 et positions[Perdrez][1] c'est 13.
Quand Perdrez vaut 1, positions[Perdrez][0] c'est 2 et positions[Perdrez][1] c'est 13.
Quand Perdrez vaut 2, positions[Perdrez][0] c'est 3 et positions[Perdrez][1] c'est 12.
Etc.
On retrouve la position dans potence par la formule longueur de ligne multipliée par numéro de ligne plus numéro de caractère dans la ligne.
La fameuse formule : maxl*positions[Perdrez][0] + positions[Perdrez][1]
Partager