Projet Tetris

Présentation

Nous allons programmer un Tetris, pour ceux qui ne connaissent pas vous pouvez avoir un exemple

.

Nous allons décomposer le travail en différente classe :

  1. La classe Piece représentera les pièces du tetris. Elle ne comporte qu'un attribu et deux méthodes :
  2. La classe Grille représentera la grille du jeu.

Création d'un table de position.

Projet

Créer un table de configuration des pièces du tetris, par exemple la pièce de type 0 (la barre) a 4 configurations :


	

Création de la classe Piece.

Projet
  1. Faire le constructeur, __init__(self,type = -1) qui retourne une pièce de type donnée (par exemple type = 0 la ligne...) si le type est négatif le type de la pièce est au hasard.
  2. Faire une méthode qui donne le type de la piéce.
  3. Faire une méthode dessin(self,x,y,configuration) qui dessine la pièce à la configuration donnée. (Si on veut on peut ajouter des options en plus par exemple la taille).

Création de la classe Grille.

Projet

Le but est de stocker l’état des pièces déjà tombée. Pas la pièce qui est en cours de descente.

  1. Réfléchir sur les données à stocker.
  2. Faire le constructeur
  3. Faire une méthode dessin(self,x_debut,y_debut,...) qui va dessiner la grille à la position donnée. Pensez éventuellement à rajouter des lignes au dessus de la grille pour pouvoir afficher les piéces qui commencent.
  4. Faire une méthode verifie(self,piece,ligne,colonne,configuration) qui vérifie si on peut poser la pièce à la position, configuration donnée sur la grille. La méthode retourne -1 si on ne peut pas, 1 si on peut en entier et 0 si on peut en la faisant dépasser du haut de la grille.
  5. Faire une méthode pose(self,piece,ligne,colonne,configuration) qui doit placer la pièce à la position donnée. Si il y a un problème (pièce qui dépasse vers le haut, ou collision avec les pièces de la grille alors la fonction retourne False sinon elle retourne True.
  6. (Dur) Faire une méthode elimine(self) qui doit éliminer les lignes remplies de la grille. La méthode doit retourner le nombre de lignes éliminées.

Création de la classe Interne.

Projet

La classe interne va réunir les deux classes précédentes, y ajouter éventuellement les pièces futurs, les mouvements...

  1. Faire le constructeur de la classe au minimum il faut une grille, une pièce, le nombre total de lignes et de colonnes et la position de la pièce (ligne,colonne et configuration). Vous pouvez ajouter par exemple des points, des pièces à venir...
  2. Faire une méthode pour chaque déplacement possible de la pièce (à droite, gauche, tourne,...). La méthode doit bien sur vérifier si le mouvement est possible elle retourne True si oui et False sinon. Faire des click sur les images.
    1. tourne_droit.
    2. tourne_gauche.
    3. deplace_droite.
    4. deplace_gauche.
    5. descendre.
    6. tombe.
  3. Faire une méthode etape_suivante() qui fait descendre de un la pièce (si possible) ou la pose dans la grille et crée une nouvelle pièce ou retourne que la partie est perdue.

Création de l'interface.

Projet

Faire une classe qui va s'occuper de l'interface, elle doit marcher schématiquement selon le shéma suivant :

Pour aller plus loin.

Une fois que le jeu est fait, il suffit d'adapter les méthodes pour obtenir un jeu de type Columns ou puyo-puyo.

De plus on peut très facilement et rapidement faire une version multijoueur du jeu, un de vos camardes même fait une version 4 joeurs du jeu.

L'utilisation de la P.OO. montre toute sa puissance ici.