Ajout bouton annuler pour le choix de la couleur

This commit is contained in:
Justine Yannis 2022-11-17 09:06:22 +01:00
parent 1a368fda17
commit 99944c5bb3
11 changed files with 71 additions and 28 deletions

View File

@ -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);
}
}
}

View File

@ -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) {

View File

@ -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());

View File

@ -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);

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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();

View File

@ -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() {

View File

@ -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

View File

@ -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;

View File

@ -138,7 +138,4 @@ public class Grille extends JPanel{
}
}
public void removePlayerPion(int Joueur){
}
}