diff --git a/projetAgile/Makefile b/projetAgile/Makefile index 40ef7a4..47e5264 100644 --- a/projetAgile/Makefile +++ b/projetAgile/Makefile @@ -116,6 +116,7 @@ build/$(PACKAGE_PATH)/Menu/View/BoutonsMenu.class : src/$(PACKAGE_PATH)/Menu/Vie build/$(PACKAGE_PATH)/Menu/View/Menu.class : src/$(PACKAGE_PATH)/Menu/View/Menu.java \ build/$(PACKAGE_PATH)/Menu/Controller/ObservateurMenuSouris.class \ build/$(PACKAGE_PATH)/Menu/View/BoutonsMenu.class \ + build/$(PACKAGE_PATH)/Menu/Controleur/ObservateurAccueil.class \ build/$(PACKAGE_PATH)/Menu/Controller/ObservateurFenetre.class \ build/$(PACKAGE_PATH)/Puissance4/LancementPartie.class @javac $(@JAVAC_OPT) $< diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java index 48a9fd2..9a6b9f6 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java @@ -4,6 +4,9 @@ import fr.iutfbleau.projetAgile.Puissance4.Event.AbstractGridInitiater; import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants; import fr.iutfbleau.projetAgile.Puissance4.Utils.GameStatus; +/** + * Classe qui représente le modèle de la grille du Puissance 4 + */ public class GrilleModel extends AbstractGridInitiater{ private int[][] grille; private GameStatus gameStatus = GameStatus.PLAYING; @@ -15,12 +18,11 @@ public class GrilleModel extends AbstractGridInitiater{ private int playerOneScore; private int playerTwoScore; + /** + * Crée le modèle et l'initialise avec des cases vides + */ public GrilleModel() { super(); - this.init(); - } - - public void init() { this.column = Constants.COLUMN_COUNT; this.row = Constants.ROW_COUNT; this.grille = new int[this.column][this.row]; @@ -29,7 +31,9 @@ public class GrilleModel extends AbstractGridInitiater{ this.reset(); } - //Fonction de test (pourra être modifié) + /** + * Réinitialise le modèle avec des cases vides et met à jour son status à PLAYING + */ public void reset() { for(int i = 0; i < this.column; i++) { for(int j = 0; j < this.row; j++) { @@ -41,12 +45,16 @@ public class GrilleModel extends AbstractGridInitiater{ this.setPartyStatus(GameStatus.PLAYING); } - protected void addPiece(int column, int row) { + private void addPiece(int column, int row) { grille[column][row] = this.playerTurn; fireGridChanged(column, row, this.playerTurn); this.piecePlayed++; - } + } + /** + * Ajoute un pion dans une colonne si elle n'est pas complète, met à jour le status de la partie et change le tour du joueur si nécessaire + * @param column La colonne dans laquelle ajouter le pion + */ public void verifyColumn(int column) { for (int row = this.row - 1; row >= 0; row--) { if (grille[column][row] == Constants.EMPTY_PLAYER) { @@ -66,7 +74,7 @@ public class GrilleModel extends AbstractGridInitiater{ * @param row La ligne du pion qui vient d'être joué * @return Retourne true si le jeu est fini */ - protected boolean verifyWin(int column, int row) { + private boolean verifyWin(int column, int row) { int playerColor = this.playerTurn; int diagonalColumn = column; int diagonalRow = row; @@ -131,7 +139,9 @@ public class GrilleModel extends AbstractGridInitiater{ if(this.piecePlayed >= this.column * this.row) this.setPartyStatus(GameStatus.DRAW); } - + /** + * Change le tour du joueur et notifie tous les listeners + */ public void switchPlayer() { this.playerTurn = this.playerTurn == Constants.PLAYER_ONE ? Constants.PLAYER_TWO : Constants.PLAYER_ONE; firePlayerChanged(this.gameStatus, this.playerTurn, this.playerOneScore, this.playerTwoScore); @@ -164,7 +174,9 @@ public class GrilleModel extends AbstractGridInitiater{ public GameStatus getGameStatus() { return this.gameStatus; } - + /** + * Change le status de la partie et notifie tous les listeners + */ public void setPartyStatus(GameStatus gameStatus) { this.gameStatus = gameStatus; if(gameStatus == GameStatus.WIN) { diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java index 7d08d66..34a5d55 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java @@ -2,8 +2,15 @@ package fr.iutfbleau.projetAgile.Puissance4.Utils; import java.awt.Color; +/** + * Classe qui représente les paramètres et constantes du puissance 4 + * - Le nombre de colonne et de lignes; + * - Le numéro des joueurs et d'un pion "vide"; + * - La couleur des pions; + * - La couleur du fond; + * - Un booléen pour savoir si un survol des pions doit être affiché. + */ public class Constants { - public final static Color PLAYER_ONE_COLOR = new Color(252,21,21); public final static Color PLAYER_TWO_COLOR = new Color(241,205,15); public final static Color BACKGROUND_COLOR = new Color(31,31,31); @@ -15,4 +22,8 @@ public class Constants { public static int PIECE_MARGIN = 10; public static int COLUMN_COUNT = 7; public static int ROW_COUNT = 6; + + private Constants() { + + } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java index 6f55583..fc399cc 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java @@ -1,5 +1,8 @@ package fr.iutfbleau.projetAgile.Puissance4.Utils; +/** + * Enumeration du status d'une partie (En cours, gagné, égalité) + */ public enum GameStatus { PLAYING, WIN, DRAW; } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java index 62ecdbb..5ad4f3e 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java @@ -111,6 +111,70 @@ public class Puissance4Panel extends JPanel{ menu.setBorder(new EmptyBorder(5,10,5,10)); } + /** + * Change la couleur de survol des pions selon le tour du joueur + * @param player le joueur qui joue + */ + public void changeHoverColor(int player) { + this.grille.changeHoverColor(player); + } + + /** + * Change le texte affichant le tour du joueur + * @param player le joueur qui joue + */ + public void changeLabel(int joueur) { + switch(joueur){ + case Constants.PLAYER_ONE: + this.label.setText("Tour de : " + this.playerOneName); + break; + + case Constants.PLAYER_TWO: + this.label.setText("Tour de : " + this.playerTwoName); + break; + + default: + this.label.setText("JOUEUR INCONNU"); + break; + } + } + + /** + * Change le propriétaire d'un pion et le redessine + * @param column la colonne du pion a changer + * @param row la ligne du pion a changer + * @param player le joueur + */ + public void addPlayerPiece(int column, int row, int player) { + this.grille.addPlayerPiece(column, row, player); + } + + /** + * Change le status de la partie affiché sur le panneau (Score + Victoire ou Egalité) + * @param status le status de la partie en cours + * @param playerTurn le tour du joueur actuel + * @param playerOneScore le score du joueur 1 + * @param playerTwoScore le score du joueur 2 + */ + public void setGameStatus(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore) { + this.grille.hover(-1); + switch(status){ + case WIN: + this.label.setText("Victoire de : " + (playerTurn == Constants.PLAYER_ONE ? this.playerOneName : this.playerTwoName)); + System.out.println("Score : " + playerOneName + " = " + playerOneScore + " " + playerTwoName + " = " + playerTwoScore); + break; + + case DRAW: + this.label.setText("Egalité"); + break; + + default: + this.changeLabel(playerTurn); + break; + } + + } + /** * Permet de définir le nom du joueur 1 */ @@ -141,51 +205,12 @@ public class Puissance4Panel extends JPanel{ this.reset.addActionListener(l); } + /** + * Ajoute un ActionListener au bouton accueil + * @param l L'ActionListener à ajouter + */ public void accueilButton(ActionListener l){ this.menu.addActionListener(l); } - - public void changeHoverColor(int player) { - this.grille.changeHoverColor(player); - } - - public void changeLabel(int joueur) { - switch(joueur){ - case Constants.PLAYER_ONE: - this.label.setText("Tour de : " + this.playerOneName); - break; - - case Constants.PLAYER_TWO: - this.label.setText("Tour de : " + this.playerTwoName); - break; - - default: - this.label.setText("JOUEUR INCONNU"); - break; - } - } - - public void addPlayerPiece(int column, int row, int player) { - this.grille.addPlayerPiece(column, row, player); - } - - public void setGameStatus(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore) { - this.grille.hover(-1); - switch(status){ - case WIN: - this.label.setText("Victoire de : " + (playerTurn == Constants.PLAYER_ONE ? this.playerOneName : this.playerTwoName)); - System.out.println("Score : " + playerOneName + " = " + playerOneScore + " " + playerTwoName + " = " + playerTwoScore); - break; - - case DRAW: - this.label.setText("Egalité"); - break; - - default: - this.changeLabel(playerTurn); - break; - } - - } }