From 99944c5bb3972e0275181db9cbd39993fcaf9479 Mon Sep 17 00:00:00 2001 From: Justine Yannis Date: Thu, 17 Nov 2022 09:06:22 +0100 Subject: [PATCH] Ajout bouton annuler pour le choix de la couleur --- .../Controller/ColorActionListener.java | 22 ++++++++++++------- .../Controller/ColorChooserListener.java | 8 +++---- .../Controller/ModelEventListener.java | 11 ++++++++-- .../Controller/Puissance4Controller.java | 1 + .../Event/AbstractGridInitiater.java | 6 ++++- .../Puissance4/LancementPuissance4.java | 11 ++++++++-- .../Puissance4/Model/GrilleModel.java | 1 + .../Puissance4/Utils/Constants.java | 11 +++++++--- .../Puissance4/Utils/GameStatus.java | 3 +++ .../Puissance4/View/ColorChooserDialog.java | 22 ++++++++++++++----- .../projetAgile/Puissance4/View/Grille.java | 3 --- 11 files changed, 71 insertions(+), 28 deletions(-) diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorActionListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorActionListener.java index 92da090..a577586 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorActionListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorActionListener.java @@ -1,7 +1,7 @@ package fr.iutfbleau.projetAgile.Puissance4.Controller; -import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants; import fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog; +import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -20,22 +20,28 @@ public class ColorActionListener implements ActionListener{ } /** - * Exécuté lors de l'appuie sur le bouton confirmé. Vérifie si les entrées de l'utilisateur sont valides, puis valide sont choix + * Exécuté lors de l'appuie sur le bouton confirmé. Vérifie si les entrées de l'utilisateur sont valides, puis valide son choix * @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#isNameValid() * @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#isColorValid() * @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#setConfirm(boolean b) */ @Override public void actionPerformed(ActionEvent e) { - if(this.dialog.isColorValid()) { - if(this.dialog.isNameValid()) { - this.dialog.setConfirm(true); - this.dialog.setVisible(false); + if(e.getActionCommand().equals(Constants.CONFIRM)) { + if(this.dialog.isColorValid()) { + if(this.dialog.isNameValid()) { + this.dialog.setConfirm(true); + this.dialog.setVisible(false); + } + } + else { + this.dialog.repaint(); } } else { - Constants.resetColor(); - this.dialog.repaint(); + this.dialog.setConfirm(false); + this.dialog.setVisible(false); } + } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorChooserListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorChooserListener.java index 4f308c1..aef650c 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorChooserListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ColorChooserListener.java @@ -16,15 +16,15 @@ public class ColorChooserListener implements ChangeListener { private int player; /** - * - * @param c - * @param player + * Constructeur + * @param c le composant à repaint + * @param player le joueur dont la couleur doit être changé */ public ColorChooserListener(JComponent c, int player) { this.composant = c; this.player = player; } - + @Override public void stateChanged(ChangeEvent e) { if(e.getSource() instanceof ColorSelectionModel) { diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java index 8d4169e..8f15391 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java @@ -9,20 +9,24 @@ public class ModelEventListener implements GridChangedListener { /** * Constructeur - * @param p + * @param p le panneau du puissance 4 + * @see fr.iutfbleau.projetAgile.Puissance4.View.Puissance4Panel */ public ModelEventListener(Puissance4Panel p) { this.panel = p; } /** - * Ajoute un pion à l'emplacement modifié dans la grille + * Modifie la vue du pion à l'emplacement modifié dans la grille */ @Override public void gridChanged(GridEvent e) { this.panel.addPlayerPiece(e.getColumn(), e.getRow(), e.getPlayer()); } + /** + * Modifie la vue lorsque le status de la partie change + */ @Override public void statusChanged(StatusEvent e) { this.panel.changeLabel(e.getPlayerTurn()); @@ -30,6 +34,9 @@ public class ModelEventListener implements GridChangedListener { this.panel.setGameStatus(e.getStatus(), e.getPlayerTurn(), e.getPlayerOneScore(), e.getPlayerTwoScore(), e.getPlayerThreeScore()); } + /** + * Modifie la vue lorsque un joueur gagne (seulement si le nombre de joueur est supérieur à 2) + */ @Override public void playerWin(PlayerEvent e){ this.panel.playerWin(e.getJ()); diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java index 8b71a3c..73f48a5 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/Puissance4Controller.java @@ -135,6 +135,7 @@ public class Puissance4Controller { * Change le nom des joueurs dans le modèle et la vue * @param J1 le nom du joueur 1 * @param J2 le nom du joueur 2 + * @param J3 le nom du joueur 3 */ public void changeName(String J1, String J2, String J3) { this.modele.setPlayerOneName(J1); diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java index 16ec791..e8768b1 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java @@ -55,6 +55,7 @@ public abstract class AbstractGridInitiater { * @param playerTurn Le tour du joueur * @param playerOneScore Le score du joueur 1 * @param playerTwoScore Le score du joueur 2 + * @param playerThreeScore Le score du joueur 3 */ protected void fireStatusChanged(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore, int playerThreeScore) { StatusEvent event = null; @@ -65,6 +66,10 @@ public abstract class AbstractGridInitiater { } } + /** + * Notifie tous les listeners lorsqu'un joueur gagne (> 2 joueurs) + * @param playerRemove le joueur qui a gagné + */ protected void firePlayerWin(int playerRemove){ PlayerEvent event=null; for(GridChangedListener listener : getGridListeners()) { @@ -72,6 +77,5 @@ public abstract class AbstractGridInitiater { event= new PlayerEvent(playerRemove); listener.playerWin(event); } - } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPuissance4.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPuissance4.java index 301f916..21d223a 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPuissance4.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPuissance4.java @@ -5,6 +5,8 @@ import fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller; import fr.iutfbleau.projetAgile.Puissance4.View.Grille; import fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog; import fr.iutfbleau.projetAgile.Puissance4.Model.GrilleModel; +import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants; + import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; @@ -43,7 +45,7 @@ public class LancementPuissance4 implements Jeu{ Object[] message = { "Combien de joueurs ?", twoPlayer, threePlayer }; - int choix = JOptionPane.showConfirmDialog(fenetre, message, "Entrez le nombre de joueur", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + int choix = JOptionPane.showConfirmDialog(fenetre, message, "Entrez le nombre de joueurs", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(choix != JOptionPane.OK_OPTION) { throw new CancellationException("User cancelled"); } @@ -53,6 +55,7 @@ public class LancementPuissance4 implements Jeu{ else playerNumber = 3; + Constants.resetColor(); ColorChooserDialog chooser = new ColorChooserDialog(fenetre, true, playerNumber); if (chooser.getChoice()) { J1 = chooser.getPlayerOneName(); @@ -92,7 +95,11 @@ public class LancementPuissance4 implements Jeu{ return this.P4.getPanel(); } - public void sendToDatabase(int playerNumber) { + /** + * Met à joueur le nombre de joueur choisi dans la base de données + * @param playerNumber le nombre de joueur choisi + */ + private void sendToDatabase(int playerNumber) { try { Class.forName("org.mariadb.jdbc.Driver"); //Verification du pilote diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java index f671cba..d34ea77 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java @@ -25,6 +25,7 @@ public class GrilleModel extends AbstractGridInitiater{ private int playerNumber; /** * Crée le modèle et l'initialise avec des cases vides + * @param playerNumber le nombre de joueurs */ public GrilleModel(int playerNumber) { super(); diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java index 496dc69..1e5a6db 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/Constants.java @@ -9,15 +9,15 @@ public class Constants { /** * La couleur du joueur 1 */ - public static Color PLAYER_ONE_COLOR = new Color(252,21,21); + public static Color PLAYER_ONE_COLOR; /** * La couleur du joueur 2 */ - public static Color PLAYER_TWO_COLOR = new Color(241,205,15); + public static Color PLAYER_TWO_COLOR; /** * La couleur du joueur 3 */ - public static Color PLAYER_THREE_COLOR = new Color(15,20,241); + public static Color PLAYER_THREE_COLOR; /** * La couleur d'un pion "vide" */ @@ -67,6 +67,11 @@ public class Constants { */ public final static int ALIGNED_NUMBER_THREE = 3; + public final static String CONFIRM = "Confirmation"; + + public final static String DENY = "Annulation"; + + 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 1903cd4..b74bace 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java @@ -4,6 +4,9 @@ package fr.iutfbleau.projetAgile.Puissance4.Utils; * Enumeration du status d'une partie (En cours, gagné, égalité) */ public enum GameStatus { + /** + * Status d'une partie en cours + */ PLAYING, /** * Status d'une partie terminé et gagné par un joueur diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/ColorChooserDialog.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/ColorChooserDialog.java index fa24e0a..6b20392 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/ColorChooserDialog.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/ColorChooserDialog.java @@ -59,11 +59,22 @@ public class ColorChooserDialog extends JDialog{ playerThreeChooser.removeChooserPanel(panelsP3[i]); } - JButton bouton = new JButton("Confirmer"); + JButton confirmButton = new JButton("Confirmer"); + confirmButton.setActionCommand(Constants.CONFIRM); + JButton denyButton = new JButton("Annuler"); + denyButton.setActionCommand(Constants.DENY); + + JPanel panelButton = new JPanel(); + panelButton.add(confirmButton); + panelButton.add(denyButton); + Pion pionP1 = new Pion(Constants.PLAYER_ONE); Pion pionP2 = new Pion(Constants.PLAYER_TWO); Pion pionP3 = new Pion(Constants.PLAYER_THREE); - bouton.addActionListener(new ColorActionListener(this)); + ColorActionListener cl = new ColorActionListener(this); + confirmButton.addActionListener(cl); + denyButton.addActionListener(cl); + pionP1.setPreferredSize(new Dimension(50,50)); pionP2.setPreferredSize(new Dimension(50,50)); pionP3.setPreferredSize(new Dimension(50,50)); @@ -172,7 +183,7 @@ public class ColorChooserDialog extends JDialog{ gbc.weighty = 0; gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.EAST; - this.add(bouton,gbc); + this.add(panelButton,gbc); this.pack(); this.setResizable(false); @@ -182,7 +193,7 @@ public class ColorChooserDialog extends JDialog{ /** * Vérifie si les couleurs choisies ne sont vont pas être confondues - * @return true si les couleurs choisies ne sont pas trop similaires les unes des unes, false sinon + * @return true si les couleurs choisies ne sont pas trop similaires renvoie true, sinon false * @see Wikipedia */ public boolean isColorValid() { @@ -288,7 +299,8 @@ public class ColorChooserDialog extends JDialog{ /** - * Permet de confirmer la choix de l'utilisateur + * Permet de confirmer le choix de l'utilisateur + * @param b le booléen */ public void setConfirm(boolean b) { this.confirm = b; diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java index ff24721..9b753b9 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java @@ -138,7 +138,4 @@ public class Grille extends JPanel{ } } - public void removePlayerPion(int Joueur){ - - } } \ No newline at end of file