From 75d7cb20c8b7a2fafdeea39e26195d7713ab1d7f Mon Sep 17 00:00:00 2001 From: Justine Yannis Date: Wed, 26 Oct 2022 14:42:43 +0200 Subject: [PATCH] Ajout de commentaire + simplication code --- .../Menu/Controller/ObservateurFenetre.java | 2 +- .../Controller/ModelEventListener.java | 6 +- .../Controller/Puissance4Controller.java | 11 +++ .../Event/AbstractGridInitiater.java | 20 ++--- .../Puissance4/Event/GridChangedListener.java | 13 ++-- .../Puissance4/Event/GridEvent.java | 5 +- .../Puissance4/Event/StatusEvent.java | 22 +++++- .../Puissance4/LancementPartie.java | 6 +- .../Puissance4/Model/GrilleModel.java | 11 ++- .../projetAgile/Puissance4/View/Pion.java | 4 +- .../Puissance4/View/Puissance4Panel.java | 74 ++++++++++++++----- 11 files changed, 120 insertions(+), 54 deletions(-) diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Menu/Controller/ObservateurFenetre.java b/projetAgile/src/fr/iutfbleau/projetAgile/Menu/Controller/ObservateurFenetre.java index 4f19444..b9b1758 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Menu/Controller/ObservateurFenetre.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Menu/Controller/ObservateurFenetre.java @@ -18,7 +18,7 @@ public class ObservateurFenetre implements WindowListener{ } // après fermeture public void windowClosing(WindowEvent evenement){ int confirmation = JOptionPane.showConfirmDialog(this.fenetre.getContentPane(), "Etes-vous sûr de vouloir fermer la fenetre ?", "Quitter", JOptionPane.YES_NO_OPTION); - if(confirmation == 1) return; + if(confirmation != JOptionPane.OK_OPTION) return; this.fenetre.dispose(); } // avant fermeture public void windowDeactivated(WindowEvent evenement){ diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java index c480072..b128c93 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java @@ -17,13 +17,9 @@ public class ModelEventListener implements GridChangedListener { } @Override - public void playerChanged(StatusEvent e) { + public void statusChanged(StatusEvent e) { this.panel.changeLabel(e.getPlayerTurn()); this.panel.changeHoverColor(e.getPlayerTurn()); - } - - @Override - public void statusChanged(StatusEvent e) { this.panel.setGameStatus(e.getStatus(), e.getPlayerTurn(), e.getPlayerOneScore(), e.getPlayerTwoScore()); } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java index 9fabe8f..affe7e7 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java @@ -42,6 +42,7 @@ public class Puissance4Controller { this.panel.init(); this.panel.changeHoverColor(this.modele.getPlayerTurn()); this.panel.changeLabel(this.modele.getPlayerTurn()); + this.panel.changeScore(this.modele.getPlayerOneScore(), this.modele.getPlayerTwoScore()); } public void reset() { @@ -55,6 +56,11 @@ public class Puissance4Controller { this.panel.changeLabel(this.modele.getPlayerTurn()); } + /** + * Vérifie si un pion peut-être placé dans la colonne + * @param x la position de la souris lors du clic + * @see fr.iutfbleau.projetAgile.Puissance4.Model.GrilleModel#verifyColumn(int) + */ public void verifyColumn(int x) { if(this.modele.getGameStatus() == GameStatus.PLAYING) { int column = (x * this.modele.getColumn() / grille.getWidth()); @@ -77,6 +83,11 @@ public class Puissance4Controller { return this.panel; } + /** + * Ajoute un listener au bouton du panneau + * @param l Le listener + * @see fr.iutfbleau.projetAgile.Puissance4.View.Puissance4Panel#accueilButton(ActionListener) + */ public void accueilButton(ActionListener l){ this.panel.accueilButton(l); } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java index 9e9db92..2287cd3 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java @@ -3,6 +3,9 @@ package fr.iutfbleau.projetAgile.Puissance4.Event; import javax.swing.event.EventListenerList; import fr.iutfbleau.projetAgile.Puissance4.Utils.GameStatus; +/** + * Classe abstraite qui factorise les fonctions pour la classe observé (Initiater) + */ public abstract class AbstractGridInitiater { protected EventListenerList listeners = new EventListenerList(); @@ -46,23 +49,12 @@ public abstract class AbstractGridInitiater { } } - /** - * Notifie tous les listeners lorsque le joueur change - * @param status - * @param playerTurn - */ - protected void firePlayerChanged(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore) { - StatusEvent event = null; - for(GridChangedListener listener : getGridListeners()) { - if(event == null) - event = new StatusEvent(status, playerTurn, playerOneScore, playerTwoScore); - listener.playerChanged(event); - } - } - /** * Notifie tous les listeners lorsque le status du jeu change * @param status Le nouveau status + * @param playerTurn Le tour du joueur + * @param playerOneScore Le score du joueur 1 + * @param playerTwoScore Le score du joueur 2 */ protected void fireStatusChanged(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore) { StatusEvent event = null; diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java index 830a6a2..c17c426 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java @@ -2,6 +2,9 @@ package fr.iutfbleau.projetAgile.Puissance4.Event; import java.util.EventListener; +/** + * Interface des listeners de la grille + */ public interface GridChangedListener extends EventListener{ /** * Méthode invoqué lorsque la grille est modifié @@ -9,15 +12,9 @@ public interface GridChangedListener extends EventListener{ */ void gridChanged(GridEvent e); - /** - * Méthode invoqué lorsque le tour du joueur est modifié - * @param e Evenement contenant l'ancien joueur et le nouveau - */ - void playerChanged(StatusEvent e); - /** - * Méthode invoqué lorsque le tour du joueur est modifié - * @param e Evenement contenant l'ancien joueur et le nouveau + * Méthode invoqué lorsque le tour du joueur est modifié ou que le status du jeu est modifié + * @param e Evenement contenant les informations sur le status du jeu */ void statusChanged(StatusEvent e); diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridEvent.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridEvent.java index 46256c5..632617e 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridEvent.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridEvent.java @@ -1,12 +1,15 @@ package fr.iutfbleau.projetAgile.Puissance4.Event; +/** + * Evenement représentant un changement dans la grille + */ public class GridEvent { private int column; private int row; private int player; /** - * Evenement représentant le changement dans la grille + * Crée un évènement * @param column la colonne modifié * @param row la ligne modifié * @param player le joueur qui a joué diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/StatusEvent.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/StatusEvent.java index d77da16..d9922da 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/StatusEvent.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/StatusEvent.java @@ -2,13 +2,21 @@ package fr.iutfbleau.projetAgile.Puissance4.Event; import fr.iutfbleau.projetAgile.Puissance4.Utils.GameStatus; +/** + * Evenement représentant le changement de status du jeu + */ public class StatusEvent { private GameStatus status; private int playerTurn; private int playerOneScore; private int playerTwoScore; + /** - * Evenement représentant le changement de status du jeu + * Crée un évènement + * @param status le status du jeu + * @param playerTurn le tour du joueur + * @param playerOneScore le score du joueur 1 + * @param playerTwoScore le score du joueur 2 */ public StatusEvent(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore) { this.status = status; @@ -25,14 +33,26 @@ public class StatusEvent { return this.status; } + /** + * Retourne le tour du joueur + * @return Le tour du joueur + */ public int getPlayerTurn() { return this.playerTurn; } + /** + * Retourne le score du joueur 1 + * @return Le score du joueur 1 + */ public int getPlayerOneScore() { return playerOneScore; } + /** + * Retourne le score du joueur 2 + * @return Le score du joueur 2 + */ public int getPlayerTwoScore() { return playerTwoScore; } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java index 43805d6..92b5ba9 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java @@ -36,12 +36,16 @@ public class LancementPartie { if (choix == JOptionPane.OK_OPTION) { J1 = field1.getText(); J2 = field2.getText(); + if(J1.length() > 10) + J1 = J1.substring(0, 9); + if(J2.length() > 10) + J2 = J2.substring(0, 9); nameCorrect = true; if(J1.isEmpty() || J2.isEmpty()) { JOptionPane.showMessageDialog(fenetre,"Un des noms est vides","Erreur ", JOptionPane.ERROR_MESSAGE); nameCorrect = false; } - if(J1.compareTo(J2) == 0) { + else if(J1.compareTo(J2) == 0) { JOptionPane.showMessageDialog(fenetre,"Les deux noms sont identiques","Erreur ", JOptionPane.ERROR_MESSAGE); nameCorrect = false; } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java index 9a6b9f6..488fe6d 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java @@ -144,7 +144,7 @@ public class GrilleModel extends AbstractGridInitiater{ */ 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); + fireStatusChanged(this.gameStatus, this.playerTurn, this.playerOneScore, this.playerTwoScore); } public int getPlayerTurn() { @@ -171,11 +171,20 @@ public class GrilleModel extends AbstractGridInitiater{ return this.playerTwoName; } + public int getPlayerOneScore() { + return playerOneScore; + } + + public int getPlayerTwoScore() { + return playerTwoScore; + } + public GameStatus getGameStatus() { return this.gameStatus; } /** * Change le status de la partie et notifie tous les listeners + * @param gameStatus le status de la partie */ public void setPartyStatus(GameStatus gameStatus) { this.gameStatus = gameStatus; diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Pion.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Pion.java index 7dbc178..3e70bca 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Pion.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Pion.java @@ -37,7 +37,7 @@ public class Pion extends JComponent{ } /** * Change le "propriétaire" du pion - * @param player + * @param player le joueur */ public void setPlayer(int player) { this.player = player; @@ -58,7 +58,7 @@ public class Pion extends JComponent{ } /** * Set la couleur de survol d'un pion - * @param c + * @param c la couleur du survol */ public static void setHighlightColor(Color c) { Pion.HIGHLIGHT_COLOR = c; diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java index 5ad4f3e..7162861 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java @@ -15,7 +15,8 @@ public class Puissance4Panel extends JPanel{ private JButton reset; private JButton menu; - private JLabel label; + private JLabel playerTurn; + private JLabel score; private Grille grille; private String playerOneName; private String playerTwoName; @@ -28,7 +29,8 @@ public class Puissance4Panel extends JPanel{ super(); this.reset = new JButton("RECOMMENCER"); this.menu = new JButton("ACCUEIL"); - this.label = new JLabel(); + this.playerTurn = new JLabel(); + this.score = new JLabel(); this.grille = grille; } @@ -76,15 +78,12 @@ public class Puissance4Panel extends JPanel{ gbc.anchor = GridBagConstraints.CENTER; gbc.gridwidth = 1; gbc.gridheight = 1; - gbc.weightx = 1.75; + gbc.weightx = 1; gbc.weighty = 0; gbc.insets = new Insets(0, 0, 0, 0); this.add(this.grille, gbc); - JPanel panneauBas = new JPanel(new FlowLayout()); - panneauBas.add(this.label); - panneauBas.add(this.reset); gbc.gridx = 1; gbc.gridy = 2; gbc.fill = GridBagConstraints.NONE; @@ -93,12 +92,37 @@ public class Puissance4Panel extends JPanel{ gbc.gridheight = 1; gbc.weightx = 0; gbc.weighty = 0; - gbc.insets = new Insets(50, 0, 0, 0); + gbc.insets = new Insets(5, 0, 0, 0); - panneauBas.setOpaque(false); - label.setForeground(Color.WHITE); - label.setFont(new Font("",Font.BOLD, 20)); - this.add(panneauBas, gbc); + playerTurn.setForeground(Color.WHITE); + playerTurn.setFont(new Font("",Font.BOLD, 20)); + this.add(this.playerTurn, gbc); + + gbc.gridx = 1; + gbc.gridy = 3; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.CENTER; + gbc.gridwidth = 1; + gbc.gridheight = 1; + gbc.weightx = 0; + gbc.weighty = 0; + gbc.insets = new Insets(5, 0, 0, 0); + + score.setForeground(new Color(183,183,183)); + score.setFont(new Font("",Font.BOLD, 20)); + this.add(this.score, gbc); + + gbc.gridx = 1; + gbc.gridy = 4; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.CENTER; + gbc.gridwidth = 1; + gbc.gridheight = 1; + gbc.weightx = 0; + gbc.weighty = 0; + gbc.insets = new Insets(10, 0, 0, 0); + + this.add(this.reset, gbc); reset.setBackground(new Color(255,64,64)); reset.setForeground(Color.WHITE); @@ -123,22 +147,31 @@ public class Puissance4Panel extends JPanel{ * Change le texte affichant le tour du joueur * @param player le joueur qui joue */ - public void changeLabel(int joueur) { - switch(joueur){ + public void changeLabel(int player) { + switch(player){ case Constants.PLAYER_ONE: - this.label.setText("Tour de : " + this.playerOneName); + this.playerTurn.setText("Tour de : " + this.playerOneName); break; case Constants.PLAYER_TWO: - this.label.setText("Tour de : " + this.playerTwoName); + this.playerTurn.setText("Tour de : " + this.playerTwoName); break; default: - this.label.setText("JOUEUR INCONNU"); + this.playerTurn.setText("JOUEUR INCONNU"); break; } } + /** + * Change le texte affichant le score des joueurs + * @param playerOneScore le score du joueur 1 + * @param playerTwoScore le score du joueur 2 + */ + public void changeScore(int playerOneScore, int playerTwoScore) { + this.score.setText(this.playerOneName + " : " + playerOneScore + " - " + playerTwoScore + " : " + this.playerTwoName); + } + /** * Change le propriétaire d'un pion et le redessine * @param column la colonne du pion a changer @@ -160,23 +193,23 @@ public class Puissance4Panel extends JPanel{ 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); + this.playerTurn.setText("Victoire de : " + (playerTurn == Constants.PLAYER_ONE ? this.playerOneName : this.playerTwoName)); break; case DRAW: - this.label.setText("Egalité"); + this.playerTurn.setText("Egalité"); break; default: this.changeLabel(playerTurn); break; } - + this.changeScore(playerOneScore, playerTwoScore); } /** * Permet de définir le nom du joueur 1 + * @param playerOneName le nom du joueur */ public void setPlayerOneName(String playerOneName) { this.playerOneName = playerOneName; @@ -184,6 +217,7 @@ public class Puissance4Panel extends JPanel{ /** * Permet de définir le nom du joueur 2 + * @param playerTwoName le nom du joueur */ public void setPlayerTwoName(String playerTwoName) { this.playerTwoName = playerTwoName;