Ajout bouton annuler pour le choix de la couleur
This commit is contained in:
parent
1a368fda17
commit
99944c5bb3
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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());
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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() {
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 <a href="https://en.wikipedia.org/wiki/Color_difference">Wikipedia</a>
|
||||
*/
|
||||
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;
|
||||
|
@ -138,7 +138,4 @@ public class Grille extends JPanel{
|
||||
}
|
||||
}
|
||||
|
||||
public void removePlayerPion(int Joueur){
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user