Projet Tetris Java

2024 semestre 2

Objectif :

Le but du projet était de créer une application en binome sur le modèle MVC (Model, View, Controller) en langage JAVA et une interface graphique gérée avec Swing. L’application devait être un Tetris fonctionnel avec la possibilité d’ajouter de nouvelles fonctionnalités.

Maquette et notice d’utilisation :

Lorsque l’on lance le jeu on accède au mode Solo. Celui-ci est sur une grille de hauteur 20 cases et de largeur 10. Le joueur peut voir son score et quelle pièce arrivera après celle qu’il aura posée.

Le joueur peut augmenter son score en créant des lignes lui donnant respectivement :

  • 10 points si 1 seul ligne est réalisée
  • 50 points si 2 lignes sont réalisées en même temps
  • 200 points si 3 lignes sont réalisées en même temps
  • 840 points si 4 lignes sont réalisées en même temps

Plus le score du joueur augmente plus la vitesse de chute des pièces augmente également :

  • De 0 à 49 points la vitesse est lente et est celle défini par défaut
  • De 50 à 99 points la vitesse est 1.25 fois plus rapide que par défaut
  • De 100 à 149 points la vitesse est 1.7 fois plus rapide que par défaut
  • De 150 à 199 points la vitesse est 2 fois plus rapide que par défaut
  • De 200 à 499 points la vitesse est 2.5 fois plus rapide que par défaut
  • A partir de 500 points la vitesse est 3.3 fois plus rapide que par défaut

Le joueur en solo à accès à plusieures touches :

  • Flèche de gauche et de droite du clavier :
    • Elles permettent au joueur de déplacer la pièce vers la gauche et vers la droite sur la grille.
  • Flèche du bas :
    • Elle permet au joueur de déplacer la pièce vers le bas en plus de la vitesse par défaut.
  • Flèche du haut ou Espace :
    • Elles permettent de faire une rotation de la pièce.

            Exemple :

à

  • Il peut faire pause à tout moment avec la touche B :

Il peut revenir dans le jeu en appuyant sur Entrer ou “OK”.

Si le joueur atteint le haut de la grille celui-à un game-over :

Son score est affiché, il peut recommencer une partie en appuyant sur Entrer ou “OK”.

En appuyant sur la touche P le mode Versus s’ouvre :

Dans ce mode il y a deux grilles de dimension et au fonctionnement égal à celle du mode solo qui fonctionne donc indépendamment. Celui qui fait le meilleur score gagne la partie.

Les touches attribuer au deuxième joueur sont :

  • Q et de D du clavier :
    • Elles permettent au joueur de déplacer la pièce vers la gauche (Q) et vers la droite (D) sur la grille.
  • Flèche du S :
    • Elle permet au joueur de déplacer la pièce vers le bas en plus de la vitesse par défaut.
  • Flèche du Z :
    • Elles permettent de faire une rotation de la pièce.

Lorsqu’un joueur à un game over la partie est terminée :

Le game over affiche le perdant et donne le score du gagnant. Une nouvelle partie peut être relancée en appuyant sur Entrer ou “OK”.

On peut quitter le mode avec la touche Echap ce qui nous ramène au mode Solo.

En appuyant sur la touche C le mode Coop s’ouvre :

C’est le même fonctionnement que le mode versus à la différence qu’ici il n’y a pas de perdant ou de gagnant, le but est de faire le plus de points à deux. Ainsi lorsqu’un des joueur entraîne un game over le score total des deux joueurs s’affiche ainsi que la contribution de chacun.

Une nouvelle partie peut être relancée en appuyant sur Entrer ou “OK”.

On peut quitter le mode avec la touche Echap ce qui nous ramène au mode Solo.

En appuyant sur la touche G le mode Grand Tetris Coop s’ouvre :

Celui-ci est sur une grille de hauteur 25 cases et de largeur 20. Le fonctionnement est le même que le mode Solo sauf que cette fois-ci chaque joueur contrôle une pièce chacun sur le même plateau. Chaque joueur voit quelle pièce va tomber une fois celle active posée et le score augmente si les deux joueurs coopèrent afin de réaliser des lignes. Les touches des joueurs sont celles énoncées dans les modes précédents.

On peut quitter le mode avec la touche Echap ce qui nous ramène au mode Solo.

Les classes du modèle MVC

Bricks

  • Brick (interface)
  • BrickManager
  • IBrick
  • JBrick
  • LBrick
  • SBrick
  • SquareBrick
  • TBrick
  • ZBrick

Les classes dans le dossier brick sont responsables de la gestion des différentes formes de briques dans le jeu Tetris. Chaque classe représente une forme de brique différente. BrickManager permet de gérer les Bricks.

Board

La classe Board est  le cœur du jeu Tetris. Elle gère l’état actuel du plateau de jeu, y compris la position et l’état des briques.

BoardGrand

La classe BoardGrand est une variante de la classe Board qui est spécifiquement conçue pour gérer le mode “Grand Tetris Coop” du jeu.

TabOperation

La classe TabOperation fournit des méthodes statiques pour effectuer diverses opérations sur des matrices 2D, qui sont utilisées pour représenter le plateau de jeu et les briques dans un jeu Tetris.

GrandCanva

Cette classe GrandCanva représente un panneau Swing personnalisé utilisé pour afficher un plateau de jeu du mode “Grand Tetris Coop”. Cette classe fournit donc une interface graphique pour afficher et mettre à jour visuellement un plateau de jeu représenté par une grille.

GrandTetrisFrame

Cette classe GrandTetrisFrame représente la fenêtre principale du mode de jeu “Grand Tetris Coop”. Elle crée et organise l’interface utilisateur du jeu Tetris, tout en gérant les événements liés au déroulement du jeu.

NextPieceCanva

Cette classe permet de créer une fenêtre de visualisation de la prochaine pièce qu’obtiendra le joueur 1 et 2 dans les modes “Solo”, “Coop” et “Versus”.

NextPieceCanva2

Cette classe permet de créer une fenêtre de visualisation de la prochaine pièce qu’obtiendra le joueur  2 dans les mode “Grand Tetris Coop”

ScorePanel

Cette classe permet de créer une fenêtre qui affiche le score des joueurs dans tous les modes de jeu.

TetrisCanva

Cette classe TetrisCanva représente un panneau Swing personnalisé utilisé pour afficher les plateaux de jeu des modes “Solo”, “Coop” et “Versus”. Cette classe fournit donc une interface graphique pour afficher et mettre à jour visuellement un plateau de jeu représenté par une grille.

TetrisFrame

Cette classe TetrisFrame représente la fenêtre principale des modes “Solo”, “Coop” et “Versus”. Elle crée et organise l’interface utilisateur du jeu Tetris, tout en gérant les événements liés au déroulement du jeu.

Themes

Cette classe Themes permet de gérer la lecture et la manipulation de la musique et des sons du jeu.

La classe Test Permet de lancer le jeu.

KeyPadController

La classe KeyPadController est un contrôleur qui gère les entrées clavier pour le jeu. Elle étend KeyAdapter, ce qui lui permet de réagir aux événements de touche.

Diagramme de classe

Cliquez ici.

Technologies

Langage : JAVA