Ajout de commentaire + simplication code
This commit is contained in:
parent
a3f51bada2
commit
75d7cb20c8
@ -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){
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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é
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user