Le jeu Tetris comporte sept pièces différentes. Voici les 7 différentes pièces du jeu : Chaque pièce peut être tournée lors de sa descente, et on a donc pour chaque pièce 4 positions. Exemple : Pour créer chaque pièce, on utilise alors un tableau à deux dimensions de int de 4 x 16. Afin de pouvoir gérer la couleur des pièces, une case vide contiendra toujours un 0, et une case pleine contiendra une valeur comprise entre 1 et 7 inclus, en fonction du n° de la pièce. Chaque pièce se verra donc affecter une couleur, par la présence dans le tableau de la pièce de valeurs différentes pour les cases pleines. Exemple : Dans toutes les fonctions de traitement de la grille de jeu, on testera le fait qu'une case soit remplie ou non par la valeur dans la case. De même, comme une valeur différente par pièce sera contenue dans le tableau, on que le contenu n'est pas égal à 0 ( avec != 0 ). Exemple : // La
case de la pièce est-elle remplie ? Dans la fonction d'affichage, en fonction de la valeur présente dans le tableau, on affichera une case de couleur différente. Les 7 pièces sont déclarées ainsi : public int[][] Piece1 = { {0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0},{0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0},{0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0},{0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0}
}; Si on examine par exemple la pièce 1, on voit que chaque série de 16 valeurs reflète une position de la pièce, et que les valeurs (0 et 5) correspondent au remplissage d'un carré de 4x4 de haut en bas et de gauche à droite. Schéma : Voici donc la liste des pièces, le numéro associé et les quatres positions possibles : L'apparition d'une nouvelle pièce en haut de la grille est composée de plusieurs étapes :
Les 7 tableaux sont initialisés lors du lancement de l'applet, ils sont seulement lus à chaque tirage d'une nouvelle pièce. Le tableau piecec (pour pièce courante) stocke une copie de la pièce en cours. L'utilisation de ce tableau évite de devoir, dans chaque fonction, traiter avec un switch () case ... quel pièce est tirée au sort. C'est ce que j'avais fait au début mais ça devient très vite ingérable et les fonctions deviennent illisibles. Le jeu complet est en fait un assemblage d'opérations réalisées sur deux tableaux, le tableau de la grille de jeu (voir plus loin) et le tableau piecec (pièce courante). S'ajoutent à cela la gestion des touches du clavier, et le thread de l'applet. |