From 28ca45fbc46d082bcc613b8883df8633f8dcec7f Mon Sep 17 00:00:00 2001 From: dagorne Date: Thu, 20 Oct 2022 11:04:51 +0200 Subject: [PATCH] Ajout Tours Joueurs et Fenetre modale confirm reset --- .../Controller/ModelEventListener.java | 15 +++++----- .../Controller/Puissance4Controller.java | 20 +++++++++---- .../Event/GridChangedListener.java | 1 + .../projetAgile/View/Puissance4Panel.java | 30 ++++++++++++++++--- 4 files changed, 48 insertions(+), 18 deletions(-) diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Controller/ModelEventListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Controller/ModelEventListener.java index 37a2483..b4c1d7e 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Controller/ModelEventListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Controller/ModelEventListener.java @@ -1,25 +1,24 @@ package fr.iutfbleau.projetAgile.Controller; import fr.iutfbleau.projetAgile.Event.*; -import fr.iutfbleau.projetAgile.Utils.Constants; -import fr.iutfbleau.projetAgile.View.Grille; +import fr.iutfbleau.projetAgile.View.Puissance4Panel; public class ModelEventListener implements GridChangedListener { - private Grille grille; + private Puissance4Panel panel; - public ModelEventListener(Grille g) { - this.grille = g; + public ModelEventListener(Puissance4Panel p) { + this.panel = p; } @Override public void gridChanged(GridEvent e) { - this.grille.addPlayerPiece(e.getColumn(), e.getRow(), e.getPlayer()); + this.panel.addPlayerPiece(e.getColumn(), e.getRow(), e.getPlayer()); } @Override public void playerChanged(PlayerEvent e) { - System.out.println("Tour du joueur : " + (e.getNewPlayer() == Constants.PLAYER_ONE ? "Rouge" : "Jaune")); + //System.out.println("Tour du joueur : " + (e.getNewPlayer() == Constants.PLAYER_ONE ? "Rouge" : "Jaune")); + this.panel.changeLabel(e.getNewPlayer()); } - } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Controller/Puissance4Controller.java b/projetAgile/src/fr/iutfbleau/projetAgile/Controller/Puissance4Controller.java index 94e332f..22cee31 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Controller/Puissance4Controller.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Controller/Puissance4Controller.java @@ -1,5 +1,6 @@ package fr.iutfbleau.projetAgile.Controller; +import javax.swing.JOptionPane; import javax.swing.JPanel; import fr.iutfbleau.projetAgile.Model.GrilleModel; @@ -19,24 +20,31 @@ public class Puissance4Controller { public Puissance4Controller(Grille grille, GrilleModel modele) { this.modele = modele; this.grille = grille; - - - ModelEventListener modelListener = new ModelEventListener(grille); + ResetGame resetListener = new ResetGame(this); GrilleMouseListener mouseListener = new GrilleMouseListener(this); - this.modele.addGridListener(modelListener); - this.grille.addMouseListener(mouseListener); - + this.grille.init(modele.getTab()); this.panel = new Puissance4Panel(this.grille); this.panel.addResetListener(resetListener); + ModelEventListener modelListener = new ModelEventListener(panel); + this.modele.addGridListener(modelListener); + this.grille.addMouseListener(mouseListener); + this.panel.init(); + this.panel.changeLabel(this.modele.getPlayerTurn()); } public void reset() { + if(this.modele.getGameStatus() == GameStatus.PLAYING) { + + int confirmation = JOptionPane.showConfirmDialog(this.panel, "Une partie est en cours ! Etes-vous sûr de vouloir recommencer ?", "Recommencer", JOptionPane.YES_NO_OPTION); + if(confirmation == 1) return; + } this.grille.reset(); this.modele.reset(); + this.panel.changeLabel(this.modele.getPlayerTurn()); } public void verifyColumn(int x) { diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Event/GridChangedListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Event/GridChangedListener.java index 1c54a4a..27e5238 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Event/GridChangedListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Event/GridChangedListener.java @@ -8,6 +8,7 @@ public interface GridChangedListener extends EventListener{ * @param e Evenement contenant la colonne, ligne et joueur du pion placé dans la grille */ void gridChanged(GridEvent e); + /** * Méthode invoqué lorsque le tour du joueur est modifié * @param e Evenement contenant l'ancien joueur et le nouveau diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/View/Puissance4Panel.java b/projetAgile/src/fr/iutfbleau/projetAgile/View/Puissance4Panel.java index 80b65f4..6f0a943 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/View/Puissance4Panel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/View/Puissance4Panel.java @@ -5,6 +5,7 @@ import javax.swing.border.EmptyBorder; import java.awt.*; import fr.iutfbleau.projetAgile.Controller.ResetGame; +import fr.iutfbleau.projetAgile.Utils.Constants; public class Puissance4Panel extends JPanel{ @@ -17,7 +18,7 @@ public class Puissance4Panel extends JPanel{ super(); this.reset = new JButton("RECOMMENCER"); this.menu = new JButton("ACCUEIL"); - this.label = new JLabel("TOUR DU JOUEUR 1"); + this.label = new JLabel(); this.grille = grille; } @@ -30,10 +31,10 @@ public class Puissance4Panel extends JPanel{ gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.NONE; - gbc.anchor = GridBagConstraints.WEST; + gbc.anchor = GridBagConstraints.CENTER; gbc.gridwidth = 1; gbc.gridheight = 1; - gbc.weightx = 0; + gbc.weightx = 1; gbc.weighty = 0; gbc.insets = new Insets(0, 0, 0, 0); @@ -62,7 +63,7 @@ public class Puissance4Panel extends JPanel{ gbc.anchor = GridBagConstraints.CENTER; gbc.gridwidth = 1; gbc.gridheight = 1; - gbc.weightx = 0; + gbc.weightx = 1.75; gbc.weighty = 0; gbc.insets = new Insets(0, 0, 0, 0); @@ -102,5 +103,26 @@ public class Puissance4Panel extends JPanel{ public void addResetListener(ResetGame l) { this.reset.addActionListener(l); } + + public void changeLabel(int joueur) { + switch(joueur){ + + case Constants.PLAYER_ONE: + this.label.setText("Tour Joueur 1"); + break; + + case Constants.PLAYER_TWO: + this.label.setText("Tour Joueur 2"); + break; + + default: + this.label.setText("TOUR JOUEUR INCONNU"); + break; + } + } + + public void addPlayerPiece(int column, int row, int player) { + this.grille.addPlayerPiece(column, row, player); + } }