diff --git a/projetAgile/Makefile b/projetAgile/Makefile index 0975784..fe5fe43 100644 --- a/projetAgile/Makefile +++ b/projetAgile/Makefile @@ -14,7 +14,8 @@ Utils = build/$(PACKAGE_PATH)/Puissance4/Utils/Constants.class \ Events = build/$(PACKAGE_PATH)/Puissance4/Event/GridChangedListener.class \ build/$(PACKAGE_PATH)/Puissance4/Event/GridEvent.class \ - build/$(PACKAGE_PATH)/Puissance4/Event/StatusEvent.class + build/$(PACKAGE_PATH)/Puissance4/Event/StatusEvent.class \ + build/$(PACKAGE_PATH)/Puissance4/Event/PlayerEvent.class Model = build/$(PACKAGE_PATH)/Puissance4/Model/GrilleModel.class @@ -45,6 +46,9 @@ build/$(PACKAGE_PATH)/Puissance4/Event/AbstractGridInitiater.class : src/$(PACKA $(Events) @javac $(@JAVAC_OPT) $< +build/$(PACKAGE_PATH)/Puissance4/Event/PlayerEvent.class : src/$(PACKAGE_PATH)/Puissance4/Event/PlayerEvent.java + @javac $(@JAVAC_OPT) $< + #------- Controleur ------ build/$(PACKAGE_PATH)/Menu/Controleur/ObservateurAccueil.class : src/$(PACKAGE_PATH)/Menu/Controller/ObservateurAccueil.java diff --git a/projetAgile/res/mariadb-client.jar b/projetAgile/res/mariadb-client.jar new file mode 100644 index 0000000..f18798b Binary files /dev/null and b/projetAgile/res/mariadb-client.jar differ diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Menu/View/BoutonsMenu.java b/projetAgile/src/fr/iutfbleau/projetAgile/Menu/View/BoutonsMenu.java index 9cce49b..b49bc9e 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Menu/View/BoutonsMenu.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Menu/View/BoutonsMenu.java @@ -66,6 +66,7 @@ public class BoutonsMenu extends JComponent{ }else{ secondPinceau.drawImage(this.img, 0, 0, this.getWidth(), this.getHeight(), this); secondPinceau.fillRoundRect(0, 0, this.getWidth(), this.getHeight(), this.getWidth()/100*9, this.getHeight()/100*29); + } secondPinceau.setColor(new Color(255, 255, 255)); secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10))); diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java index bc52e8f..b26f3d2 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Controller/ModelEventListener.java @@ -29,4 +29,9 @@ public class ModelEventListener implements GridChangedListener { this.panel.changeHoverColor(e.getPlayerTurn()); this.panel.setGameStatus(e.getStatus(), e.getPlayerTurn(), e.getPlayerOneScore(), e.getPlayerTwoScore(), e.getPlayerThreeScore()); } + + @Override + public void playerRemove(PlayerEvent e){ + this.panel.RemovePlayer(e.getJ(), e.getGrille()); + } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java index 2abae62..5542d81 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/AbstractGridInitiater.java @@ -64,4 +64,14 @@ public abstract class AbstractGridInitiater { listener.statusChanged(event); } } + + protected void firePlayerChanged(int playerRemove, int[][] grille){ + PlayerEvent event=null; + for(GridChangedListener listener : getGridListeners()) { + if(event == null) + event= new PlayerEvent(playerRemove, grille); + listener.playerRemove(event); + } + + } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java index c17c426..a07c853 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/GridChangedListener.java @@ -17,5 +17,11 @@ public interface GridChangedListener extends EventListener{ * @param e Evenement contenant les informations sur le status du jeu */ void statusChanged(StatusEvent e); + + /** + * Méthode invoqué lors de la suppréssion d'un joueur + * @param e evenement du joueur a supprimé + */ + void playerRemove(PlayerEvent e); } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/PlayerEvent.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/PlayerEvent.java new file mode 100644 index 0000000..19fb482 --- /dev/null +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Event/PlayerEvent.java @@ -0,0 +1,21 @@ +package fr.iutfbleau.projetAgile.Puissance4.Event; + +/** + * evénement lors de la supprésion d'un joueur + */ +public class PlayerEvent { + private int J; + private int[][] grille; + + public PlayerEvent(int j0, int[][] grille0){ + this.J=j0; + this.grille=grille0; + } + public int getJ() { + return J; + } + + public int[][] getGrille() { + return grille; + } +} diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java index 351f8ed..b289a45 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Model/GrilleModel.java @@ -193,7 +193,7 @@ public class GrilleModel extends AbstractGridInitiater{ */ public void setPartyStatus(GameStatus gameStatus) { this.gameStatus = gameStatus; - if(gameStatus == GameStatus.WIN) { + if(gameStatus == GameStatus.WIN || gameStatus == GameStatus.FIRST) { if(this.playerTurn == Constants.PLAYER_ONE) playerOneScore++; else if(this.playerTurn == Constants.PLAYER_TWO) @@ -201,7 +201,38 @@ public class GrilleModel extends AbstractGridInitiater{ else playerThreeScore++; } + fireStatusChanged(this.gameStatus, this.playerTurn, this.playerOneScore, this.playerTwoScore, this.playerThreeScore); + if(this.gameStatus==GameStatus.FIRST){ + this.removePlayerPion(); + firePlayerChanged(this.playerTurn, this.grille); + this.gameStatus=GameStatus.PLAYING; + fireStatusChanged(this.gameStatus, this.playerTurn, this.playerOneScore, this.playerTwoScore, this.playerThreeScore); + } + } + + /** + * retire les pions du joueur qui viens de gagner + */ + private void removePlayerPion(){ + for(int i=0; i=0; i--){ + if(i>0){ + col[i]=col[i-1]; + }else{ + col[0]=Constants.EMPTY_PLAYER; + } + } } /** diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java index b74bace..3cfc643 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/Utils/GameStatus.java @@ -4,6 +4,7 @@ package fr.iutfbleau.projetAgile.Puissance4.Utils; * Enumeration du status d'une partie (En cours, gagné, égalité) */ public enum GameStatus { + FIRST, /** * Status d'une partie en cours */ diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java index a400071..64f7585 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java @@ -81,6 +81,18 @@ public class Grille extends JPanel{ this.repaint(); } + public void RemovePlayer(int Joueur, int[][] j){ + for (int x = 0; x < this.column; x++) { + for (int y = 0; y < this.row; y++) { + this.grille[x][y].setPlayer(j[x][y]); + this.grille[x][y].setHover(false); + } + } + this.repaint(); + } + + + /** * Change la couleur de survol des pions selon le tour du joueur * @param player le joueur qui joue @@ -137,4 +149,8 @@ public class Grille extends JPanel{ } } } + + public void removePlayerPion(int Joueur){ + + } } \ No newline at end of file diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java index ac8d6bd..c2a9728 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java @@ -221,6 +221,10 @@ public class Puissance4Panel extends JPanel{ this.playerTurn.setText("Egalité"); break; + case FIRST: + JOptionPane.showMessageDialog(this, "Victoire de : " + (playerTurn == Constants.PLAYER_ONE ? this.playerOneName : this.playerTwoName), "Victoire", JOptionPane.DEFAULT_OPTION); + break; + default: this.changeLabel(playerTurn); break; @@ -231,6 +235,12 @@ public class Puissance4Panel extends JPanel{ this.changeScore(playerOneScore, playerTwoScore, playerThreeScore); } + public void RemovePlayer(int Player, int[][] grille){ + this.grille.RemovePlayer(Player, grille); + this.changeHoverColor(Player); + this.changeLabel(Player); + } + /** * Permet de définir le nom du joueur 1 * @param playerOneName le nom du joueur