Merge branch 'master' of https://dwarves.iut-fbleau.fr/gitiut/justiney/FIprojetAgile2022Groupe3B
This commit is contained in:
commit
1988d63733
@ -1,4 +1,4 @@
|
||||
@JAVAC_OPT = -implicit:none \
|
||||
@JAVAC_OPT = -implicit:none -encoding UTF-8\
|
||||
-d build -classpath "build:res/mariadb-client.jar" -sourcepath src
|
||||
PACKAGE = fr.iutfbleau.projetAgile
|
||||
PACKAGE_PATH = fr/iutfbleau/projetAgile
|
||||
|
@ -1,10 +1,30 @@
|
||||
package fr.iutfbleau.projetAgile;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.border.TitledBorder;
|
||||
import java.awt.Color;
|
||||
import java.util.Enumeration;
|
||||
|
||||
import fr.iutfbleau.projetAgile.Menu.View.Menu;
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
UIManager.put("Button.background", Constants.RED);
|
||||
UIManager.put("Button.foreground", Color.WHITE);
|
||||
UIManager.put("OptionPane.background", Constants.BACKGROUND_COLOR);
|
||||
UIManager.put("Panel.background", Constants.BACKGROUND_COLOR);
|
||||
UIManager.put("Panel.foreground", Color.WHITE);
|
||||
UIManager.put("Label.background", Constants.BACKGROUND_COLOR);
|
||||
UIManager.put("Label.foreground", Color.WHITE);
|
||||
UIManager.put("TextPane.foreground", Color.WHITE);
|
||||
UIManager.put("OptionPane.messageForeground", Color.WHITE);
|
||||
UIManager.put("RadioButton.background", Constants.BACKGROUND_COLOR);
|
||||
UIManager.put("RadioButton.foreground", Color.WHITE);
|
||||
UIManager.put("Button.focus", Constants.RED);
|
||||
UIManager.put("Button.border", new EmptyBorder(5,10,5,10));
|
||||
|
||||
JFrame frame = Menu.getFrame();
|
||||
JPanel menu=Menu.InitMenu();
|
||||
frame.add(menu, Menu.MENU);
|
||||
|
@ -1,14 +1,26 @@
|
||||
package fr.iutfbleau.projetAgile.Menu.Controller;
|
||||
|
||||
import java.awt.event.*;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
import fr.iutfbleau.projetAgile.Menu.View.Menu;
|
||||
|
||||
/**
|
||||
* Class de l'observateur du Bouton Acceuil des Jeux
|
||||
*/
|
||||
public class ObservateurAccueil implements ActionListener{
|
||||
public ObservateurAccueil(){}
|
||||
|
||||
/**
|
||||
* Fonction lors du clique
|
||||
* retourne au menu après confirmation
|
||||
*/
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent evenement){
|
||||
//On affiche la confirmation en bloquant la fentre
|
||||
int confirmation = JOptionPane.showConfirmDialog(Menu.getFrame(), "Etes-vous sûr de vouloir retourner au menu ?", "Menu", JOptionPane.YES_NO_OPTION);
|
||||
if(confirmation == 1) return;
|
||||
Menu.show(Menu.MENU);
|
||||
//si c'est ok on retourne au Menu
|
||||
if(confirmation == JOptionPane.YES_OPTION){
|
||||
Menu.show(Menu.MENU);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,32 +5,74 @@ import javax.swing.JFrame;
|
||||
import javax.swing.JOptionPane;
|
||||
import java.awt.event.WindowEvent;
|
||||
|
||||
/**
|
||||
* Class de l'observateur de la fenetre
|
||||
* Utiliser pour avoir une fentre modal pour confirmer la fermeture
|
||||
*/
|
||||
public class ObservateurFenetre implements WindowListener{
|
||||
//il doit connaitre la fenetre pour faire une fenetre modale
|
||||
private JFrame fenetre;
|
||||
/**
|
||||
* Constructeur
|
||||
* @param fenetre0 la fentre qui va instancier la fentre modale
|
||||
*/
|
||||
public ObservateurFenetre(JFrame fenetre0){
|
||||
this.fenetre=fenetre0;
|
||||
}
|
||||
/**
|
||||
* fentre au premier plan
|
||||
* */
|
||||
@Override
|
||||
public void windowActivated(WindowEvent evenement){
|
||||
|
||||
} // premier plan
|
||||
}
|
||||
/**
|
||||
* Aprèes fermeture de la fentre
|
||||
* */
|
||||
@Override
|
||||
public void windowClosed(WindowEvent evenement){
|
||||
|
||||
} // après fermeture
|
||||
}
|
||||
/**
|
||||
* Avant fermeture de la fentre
|
||||
* On affiche la fentre Modale
|
||||
*/
|
||||
@Override
|
||||
public void windowClosing(WindowEvent evenement){
|
||||
//On demande la Confirmation avec un JOptionPane
|
||||
int confirmation = JOptionPane.showConfirmDialog(this.fenetre.getContentPane(), "Etes-vous sûr de vouloir fermer la fenetre ?", "Quitter", JOptionPane.YES_NO_OPTION);
|
||||
if(confirmation != JOptionPane.OK_OPTION) return;
|
||||
this.fenetre.dispose();
|
||||
} // avant fermeture
|
||||
//Si c'est ok
|
||||
if(confirmation == JOptionPane.OK_OPTION){
|
||||
//on ferme la fentre
|
||||
this.fenetre.dispose();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Passage en arrière plan
|
||||
*/
|
||||
@Override
|
||||
public void windowDeactivated(WindowEvent evenement){
|
||||
|
||||
} // arrière-plan
|
||||
}
|
||||
/**
|
||||
* Restauration de la fentre
|
||||
*/
|
||||
@Override
|
||||
public void windowDeiconified(WindowEvent evenement){
|
||||
|
||||
} // restauration
|
||||
}
|
||||
/**
|
||||
* Minimisation de la fentre
|
||||
*/
|
||||
@Override
|
||||
public void windowIconified(WindowEvent evenement){
|
||||
|
||||
} // minimisation
|
||||
}
|
||||
/**
|
||||
* Après Ouverture de la fentre
|
||||
*/
|
||||
@Override
|
||||
public void windowOpened(WindowEvent evenement){
|
||||
|
||||
} // après ouverture
|
||||
}
|
||||
}
|
||||
|
@ -5,34 +5,74 @@ import java.awt.event.*;
|
||||
import fr.iutfbleau.projetAgile.Menu.View.*;
|
||||
|
||||
/**
|
||||
* Observateur des Boutons du Menu
|
||||
* Observateur des Boutons du Menu (des Jeu)
|
||||
*/
|
||||
public class ObservateurMenuSouris implements MouseListener{
|
||||
/**
|
||||
* Constructeur
|
||||
* Fonction s'effectuant au clique
|
||||
* lance le Jeu si il est Dispnnible
|
||||
*/
|
||||
public ObservateurMenuSouris(){
|
||||
}
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent evenement){
|
||||
//on incrémente le nombre de clique
|
||||
Menu.addClique();
|
||||
//On récupère le Composant
|
||||
BoutonsMenu bout=(BoutonsMenu) (evenement.getComponent());
|
||||
//Si c'est le jeu PUISSANCE 4
|
||||
if(bout.getPath()==Menu.PUISSANCE_4){
|
||||
//On dis au Menu de'afficher le Jeu PUISSANCE 4
|
||||
Menu.show(Menu.PUISSANCE_4);
|
||||
return;
|
||||
}
|
||||
} // un bouton cliqué
|
||||
//Les autre jeu suiverons le même fonctionnement que PUISSANCE 4
|
||||
}
|
||||
/**
|
||||
* Fonction quand la souris etre dans la zone du JComponent
|
||||
* pour inquer au joueur le survol
|
||||
*/
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent evenement){
|
||||
//On récupere le composant
|
||||
BoutonsMenu bout=(BoutonsMenu) (evenement.getComponent());
|
||||
//on lui indique le survol
|
||||
bout.setSurvol(true);
|
||||
} // debut du survol
|
||||
}
|
||||
/**
|
||||
* Fonction quand la souris quite la zone du JComponent
|
||||
* pour inquer au joueur le survol
|
||||
*/
|
||||
@Override
|
||||
public void mouseExited(MouseEvent evenement){
|
||||
//on récupère le Composant
|
||||
BoutonsMenu bout=(BoutonsMenu) (evenement.getComponent());
|
||||
//on lui inqique le survol
|
||||
bout.setSurvol(false);
|
||||
} // fin du survol
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction lorsque on reste appuyer sur la Souris
|
||||
* donne l'impression de clique
|
||||
*/
|
||||
@Override
|
||||
public void mousePressed(MouseEvent evenement){
|
||||
//On récupère le Composant
|
||||
BoutonsMenu bout=(BoutonsMenu) (evenement.getComponent());
|
||||
//Pour augmenter l'impression de clique
|
||||
//On met le survol a false
|
||||
//pour diminuer la taille du Composant
|
||||
bout.setSurvol(false);
|
||||
} // un bouton appuyé
|
||||
}
|
||||
/**
|
||||
* Fonction lorsque on relache la Souris
|
||||
* donne l'impression de clique
|
||||
* */
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent evenement){
|
||||
//On récupère le Composant
|
||||
BoutonsMenu bout=(BoutonsMenu) (evenement.getComponent());
|
||||
//Pour augmenter l'impression de clique
|
||||
//On met le survol a false
|
||||
//pour diminuer la taille du Composant
|
||||
bout.setSurvol(true);
|
||||
} // un bouton relâché
|
||||
}
|
||||
}
|
||||
|
@ -53,26 +53,36 @@ public class BoutonsMenu extends JComponent{
|
||||
}
|
||||
// maintenant on dessine ce que l'on veut
|
||||
String dispo;
|
||||
//Si le jeu est disponnible
|
||||
if(this.disponibiliter==true){
|
||||
//on met la couleur et le String Correspondant
|
||||
secondPinceau.setColor(new Color(255,0,0,200));
|
||||
dispo="Disponible";
|
||||
//Autrement
|
||||
}else{
|
||||
//on met une autre couleur et le String Correspondant
|
||||
secondPinceau.setColor(new Color(100,100,100,200));
|
||||
dispo="Indisponible";
|
||||
}
|
||||
//Si le Menu est survoler:
|
||||
if(this.survol==false){
|
||||
//On draw l'image un peu plus Gros pour augmenter le resentis de survol
|
||||
secondPinceau.drawImage(this.img, 5, 5, this.getWidth()-10, this.getHeight()-10, this);
|
||||
secondPinceau.fillRoundRect(5, 5, this.getWidth()-10, this.getHeight()-10, this.getWidth()/100*9, this.getHeight()/100*29);
|
||||
//Autrement
|
||||
}else{
|
||||
//On draw l'image plus petite
|
||||
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);
|
||||
|
||||
}
|
||||
//On met du blanc pour le titre
|
||||
secondPinceau.setColor(new Color(255, 255, 255));
|
||||
//On draw le titre du jeu dans une taille assez grosse et centrer
|
||||
secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10)));
|
||||
FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
|
||||
secondPinceau.drawString(this.path.toUpperCase(), (this.getWidth()/2-metrics.stringWidth(this.path.toUpperCase())/2), (this.getHeight()-metrics.getHeight())/3+metrics.getAscent());
|
||||
//DISPO OU PAS
|
||||
//DISPO OU PAS: On l'affiche aussi
|
||||
secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/20)));
|
||||
metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
|
||||
secondPinceau.drawString(dispo, (this.getWidth()/2-metrics.stringWidth(dispo)/2), (this.getHeight()-metrics.getHeight())/3*2+metrics.getAscent());
|
||||
|
@ -4,6 +4,7 @@ import java.awt.*;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import fr.iutfbleau.projetAgile.Jeu;
|
||||
import fr.iutfbleau.projetAgile.Menu.Controller.*;
|
||||
@ -11,24 +12,37 @@ import fr.iutfbleau.projetAgile.Puissance4.LancementPuissance4;
|
||||
import java.awt.event.WindowListener;
|
||||
import java.util.concurrent.CancellationException;
|
||||
|
||||
/**
|
||||
* Class Abstraite mais static
|
||||
* Pouvant donc etre utiliser sans être connu
|
||||
* elle permet de créer le Menu
|
||||
*/
|
||||
public abstract class Menu{
|
||||
public static String PUISSANCE_4="puissance4";
|
||||
public static String MENU="Menu";
|
||||
/* Chaque Jeu aura sa variable final static ainsi que le menu
|
||||
Ces variables sont utiliser pour changer de jeu ou retourner au menu avec la foction
|
||||
show*/
|
||||
public final static String PUISSANCE_4="puissance4";
|
||||
public final static String MENU="Menu";
|
||||
private static JFrame frame=new JFrame("Argile");
|
||||
private static CardLayout cd=new CardLayout();
|
||||
private static String JEU="Jeu";
|
||||
private static int cliqueCount=0;
|
||||
|
||||
/**
|
||||
* methode static pour avoir le JPanel Affichant le Menu
|
||||
* @return un JPanel instancier avec les composant du menu
|
||||
*
|
||||
*/
|
||||
public static JPanel InitMenu(){
|
||||
//On initialise le JPanel
|
||||
JPanel p=new JPanel();
|
||||
p.setBackground(new Color(31,31,31));
|
||||
GridBagLayout gbl=new GridBagLayout();
|
||||
p.setLayout(gbl);
|
||||
//On utilisera un GridBagLayout pour plus de liberter dans le positionnement
|
||||
//des éléments du menu
|
||||
|
||||
GridBagConstraints gbc=new GridBagConstraints();
|
||||
//On positionne le titre
|
||||
gbc.gridx=0;
|
||||
gbc.gridy=0;
|
||||
gbc.gridwidth=3;
|
||||
@ -38,14 +52,18 @@ public abstract class Menu{
|
||||
gbc.weightx=2;
|
||||
gbc.weighty=0;
|
||||
gbc.insets=new Insets(0,10,0,10);
|
||||
//on créer le titre
|
||||
JLabel titre=new JLabel("ARGILE GAMES");
|
||||
titre.setHorizontalAlignment(JLabel.CENTER);
|
||||
titre.setForeground(new Color(255,255,255));
|
||||
titre.setBackground(new Color(55,55,55));
|
||||
titre.setFont(new Font("Serif" ,Font.BOLD, 50));
|
||||
//on set sa préferedSize car le GridBagLayout en tiendra compte
|
||||
titre.setPreferredSize(new Dimension(400,200));
|
||||
//On ajoute le titre
|
||||
p.add(titre, gbc);
|
||||
|
||||
//On créer les élément du jeu(JComponent)
|
||||
BoutonsMenu puissance_4=new BoutonsMenu(Menu.PUISSANCE_4, true);
|
||||
BoutonsMenu echecs=new BoutonsMenu("echecs", false);
|
||||
BoutonsMenu dames=new BoutonsMenu("dames", false);
|
||||
@ -58,6 +76,7 @@ public abstract class Menu{
|
||||
BoutonsMenu minecraft=new BoutonsMenu("minigolf", false);
|
||||
BoutonsMenu puzzle=new BoutonsMenu("puzzle", false);
|
||||
|
||||
//On y ajoute leurs observateurs
|
||||
ObservateurMenuSouris obser=new ObservateurMenuSouris();
|
||||
puissance_4.addMouseListener(obser);
|
||||
echecs.addMouseListener(obser);
|
||||
@ -71,6 +90,8 @@ public abstract class Menu{
|
||||
minecraft.addMouseListener(obser);
|
||||
puzzle.addMouseListener(obser);
|
||||
|
||||
|
||||
//on les ajoute au panneau en précisant leurs positions avec le GridBagConstraints
|
||||
p.add(puissance_4, Menu.GridBagConstraintsRetour(0, 1));
|
||||
p.add(echecs, Menu.GridBagConstraintsRetour(1, 1));
|
||||
p.add(dames, Menu.GridBagConstraintsRetour(2, 1));
|
||||
@ -82,12 +103,15 @@ public abstract class Menu{
|
||||
p.add(CoD, Menu.GridBagConstraintsRetour(0, 3));
|
||||
p.add(minecraft, Menu.GridBagConstraintsRetour(1, 3));
|
||||
p.add(puzzle, Menu.GridBagConstraintsRetour(2, 3));
|
||||
|
||||
//On a fini, on retourne le panneau
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* methode priver pour calculer la positions des composants
|
||||
*
|
||||
* comme il se répartisent en ligne et collonne les arguments devant être connu sont donc
|
||||
* la ligne et la collonne du composant
|
||||
* @return le GridBagConstraints correspondants aux arguments
|
||||
* @param collonne sa place dans la collonne
|
||||
* @param ligne sa ligne
|
||||
@ -103,6 +127,7 @@ public abstract class Menu{
|
||||
gbc.weightx=1;
|
||||
gbc.weighty=1;
|
||||
Insets marge=new Insets(0,0,0,0);
|
||||
//La Marge est différente en Fonction de la position du composant
|
||||
if(collonne==0){
|
||||
marge.set(5, 50, 5, 5);
|
||||
}
|
||||
@ -130,6 +155,7 @@ public abstract class Menu{
|
||||
*
|
||||
* @param g
|
||||
* le string de la carte correspondant
|
||||
* devant être un String de la class Menu
|
||||
|
||||
*/
|
||||
public static void show(String g)
|
||||
@ -153,21 +179,39 @@ public abstract class Menu{
|
||||
}
|
||||
}
|
||||
/**
|
||||
* getter pouvant initialiser la JFrame
|
||||
* getter pouvant initialiser la JFrame si elle n'a jamais été utiliser
|
||||
*
|
||||
* @return
|
||||
* la fenetre
|
||||
*/
|
||||
public static JFrame getFrame(){
|
||||
//Si la JFrame n'a pas le layout désirer
|
||||
//Elle n'a donc pas été initialiser
|
||||
if(Menu.frame.getLayout()!=Menu.cd){
|
||||
//On l'initialise
|
||||
Menu.frame.setLayout(Menu.cd);
|
||||
Menu.frame.setMinimumSize(new Dimension(1280,720));
|
||||
Menu.frame.setLocation(200,200);
|
||||
}
|
||||
//Si la fenetre n'as pas de WindowListeners
|
||||
WindowListener[] wl=Menu.frame.getWindowListeners();
|
||||
if(wl.length==0){
|
||||
//On l'initalise
|
||||
Menu.frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||
Menu.frame.addWindowListener(new ObservateurFenetre(Menu.frame));
|
||||
}
|
||||
//finalement on retourne la Fenetre
|
||||
return Menu.frame;
|
||||
}
|
||||
|
||||
/**
|
||||
* Methode comptant les clique effectuer sur les Composant du menu (Jeu)
|
||||
* elle est juste un petit easterEgg affichant un bravo tout les 100 clique
|
||||
*/
|
||||
public static void addClique(){
|
||||
Menu.cliqueCount++;
|
||||
if(Menu.cliqueCount%100==0){
|
||||
JOptionPane.showMessageDialog(frame, "Bravo vous avez cliquer "+String.valueOf(Menu.cliqueCount)+" fois", "Bravo !", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
@ -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,20 @@ 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Couleur du pion du joueur change en fonction de la couleur sélectionnée
|
||||
* @param e
|
||||
* @see #ColorChooserListener(JComponent, int)
|
||||
*/
|
||||
@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);
|
||||
|
@ -9,10 +9,21 @@ public class ResetGame implements ActionListener {
|
||||
*/
|
||||
private Puissance4Controller controller;
|
||||
|
||||
|
||||
/**
|
||||
* Création du listener du bouton reset
|
||||
* @param p
|
||||
*/
|
||||
public ResetGame(Puissance4Controller p){
|
||||
this.controller = p;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Appelle la fonction ResetGame
|
||||
* @param e
|
||||
* @see #ResetGame(Puissance4Controller)
|
||||
*/
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
this.controller.reset();
|
||||
|
@ -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 (supérieur à 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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,20 @@ package fr.iutfbleau.projetAgile.Puissance4.Event;
|
||||
public class PlayerEvent {
|
||||
private int J;
|
||||
|
||||
|
||||
/**
|
||||
* Créer un évènement
|
||||
* @param j0
|
||||
*/
|
||||
public PlayerEvent(int j0){
|
||||
this.J=j0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne le joueur
|
||||
* @return le joueur
|
||||
*/
|
||||
public int getJ() {
|
||||
return J;
|
||||
}
|
||||
|
@ -5,10 +5,11 @@ 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;
|
||||
import org.mariadb.jdbc.*;
|
||||
import java.sql.Statement;
|
||||
import java.util.concurrent.CancellationException;
|
||||
|
||||
@ -30,6 +31,7 @@ public class LancementPuissance4 implements Jeu{
|
||||
* @throws CancellationException Renvoie une exception si les utilisateurs annule le lancement de la partie
|
||||
*/
|
||||
public LancementPuissance4(JFrame fenetre) throws CancellationException{
|
||||
|
||||
String J1 = null;
|
||||
String J2 = null;
|
||||
String J3 = null;
|
||||
@ -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
|
||||
|
@ -23,8 +23,10 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
private int playerThreeScore;
|
||||
private LinkedList<Integer> playersList;
|
||||
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();
|
||||
@ -58,6 +60,9 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
this.setPartyStatus(GameStatus.PLAYING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remet la liste des joueurs dans l'ordre d'origine
|
||||
*/
|
||||
private void resetList() {
|
||||
this.playersList.clear();
|
||||
this.playersList.add(Constants.PLAYER_ONE);
|
||||
@ -67,6 +72,11 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute un pion dans la grille
|
||||
* @param column colonne de la grille
|
||||
* @param row ligne de la grille
|
||||
*/
|
||||
private void addPiece(int column, int row) {
|
||||
grille[column][row] = this.playerTurn;
|
||||
fireGridChanged(column, row, this.playerTurn);
|
||||
@ -96,6 +106,9 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime de la liste le joueur qui vient de gagner
|
||||
*/
|
||||
private void removePlayer(){
|
||||
this.increaseScore();
|
||||
this.removePlayerPion();
|
||||
@ -105,6 +118,9 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
this.verifyNewWin();
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si tous les joueurs ont gagnés lors du passage de 3 à 2 joueurs
|
||||
*/
|
||||
private void verifyNewWin() {
|
||||
boolean verifyFirstWin = this.verifyWinAll(this.playerTurn);
|
||||
this.switchPlayer();
|
||||
@ -119,6 +135,10 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie la grille en fonction de la couleur du pion
|
||||
* @param playerColor joueur associé à une couleur
|
||||
*/
|
||||
public boolean verifyWinAll(int playerColor) {
|
||||
for(int y = 0; y < this.column; y++) {
|
||||
for(int x = this.row - 1; x >= 0; x--) {
|
||||
@ -172,13 +192,13 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
|
||||
|
||||
/**
|
||||
* ReplayersListne true si 4 jetons de la même couleur ou plus sont alignés
|
||||
* renvoie true si 4 jetons de la même couleur ou plus sont alignés
|
||||
* @param numColumn La colonne où commencer
|
||||
* @param numRow La ligne où commencer
|
||||
* @param columnOffset l'offset de déplacement vertical
|
||||
* @param rowOffset l'offset de déplacement horizontal
|
||||
* @param playerColor La couleur du joueur (entier)
|
||||
* @return ReplayersListne true si 4 jetons ou plus sont alignés
|
||||
* @return renvoie true si 4 jetons ou plus sont alignés
|
||||
*/
|
||||
private boolean verifyAlignedPiece(int numColumn, int numRow, int columnOffset, int rowOffset, int playerColor) {
|
||||
int couleur = playerColor;
|
||||
@ -202,6 +222,9 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie s'il y a une égalité
|
||||
*/
|
||||
private void verifyDraw() {
|
||||
if(this.piecePlayed >= this.column * this.row)
|
||||
this.setPartyStatus(GameStatus.DRAW);
|
||||
@ -228,7 +251,9 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
fireStatusChanged(this.gameStatus, this.playerTurn, this.playerOneScore, this.playerTwoScore, this.playerThreeScore);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Augmente le score du joueur victorieux
|
||||
*/
|
||||
private void increaseScore() {
|
||||
if(this.playerTurn == Constants.PLAYER_ONE)
|
||||
playerOneScore++;
|
||||
@ -252,6 +277,11 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fait tomber les pions de la colonne à partir de la ligne sélectionnée
|
||||
* @param col colonne de la grille
|
||||
* @param ligne ligne de la grille
|
||||
*/
|
||||
private void dropColumn(int col, int ligne){
|
||||
for(int i=ligne; i>=0; i--){
|
||||
if(i>0){
|
||||
@ -266,7 +296,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
// ----------------------- Getter et Setter --------------------------
|
||||
|
||||
/**
|
||||
* ReplayersListne le playersList du joueur
|
||||
* renvoie le playersList du joueur
|
||||
* @return Le playersList du joueur
|
||||
*/
|
||||
public int getPlayerTurn() {
|
||||
@ -274,7 +304,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le tableau d'entier qui représente l'état de la grille
|
||||
* renvoie le tableau d'entier qui représente l'état de la grille
|
||||
* @return Le tableau d'entier
|
||||
*/
|
||||
public int[][] getTab() {
|
||||
@ -282,7 +312,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le nombre de colonne de la grille
|
||||
* renvoie le nombre de colonne de la grille
|
||||
* @return Le nombre de colonne
|
||||
*/
|
||||
public int getColumn() {
|
||||
@ -290,7 +320,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le nombre de ligne de la grille
|
||||
* renvoie le nombre de ligne de la grille
|
||||
* @return Le nombre de ligne
|
||||
*/
|
||||
public int getRow() {
|
||||
@ -298,7 +328,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le nom du joueur 1
|
||||
* renvoie le nom du joueur 1
|
||||
* @return Un string du nom du joueur 1
|
||||
*/
|
||||
public String getPlayerOneName() {
|
||||
@ -306,7 +336,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le nom du joueur 2
|
||||
* renvoie le nom du joueur 2
|
||||
* @return Un string du nom du joueur 2
|
||||
*/
|
||||
public String getPlayerTwoName() {
|
||||
@ -314,7 +344,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le nom du joueur 3
|
||||
* renvoie le nom du joueur 3
|
||||
* @return Un string du nom du joueur 2
|
||||
*/
|
||||
public String getPlayerThreeName() {
|
||||
@ -323,7 +353,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
|
||||
|
||||
/**
|
||||
* ReplayersListne le score du joueur 1
|
||||
* renvoie le score du joueur 1
|
||||
* @return Le score du joueur 1
|
||||
*/
|
||||
public int getPlayerOneScore() {
|
||||
@ -331,7 +361,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le score du joueur 2
|
||||
* renvoie le score du joueur 2
|
||||
* @return Le score du joueur 2
|
||||
*/
|
||||
public int getPlayerTwoScore() {
|
||||
@ -339,7 +369,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le score du joueur 3
|
||||
* renvoie le score du joueur 3
|
||||
* @return Le score du joueur 3
|
||||
*/
|
||||
public int getPlayerThreeScore() {
|
||||
@ -347,7 +377,7 @@ public class GrilleModel extends AbstractGridInitiater{
|
||||
}
|
||||
|
||||
/**
|
||||
* ReplayersListne le {@link fr.iutfbleau.projetAgile.Puissance4.Utils.GameStatus status} de la partie
|
||||
* renvoie le {@link fr.iutfbleau.projetAgile.Puissance4.Utils.GameStatus status} de la partie
|
||||
* @return Le status de la partie
|
||||
*/
|
||||
public GameStatus getGameStatus() {
|
||||
|
@ -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"
|
||||
*/
|
||||
@ -26,6 +26,11 @@ public class Constants {
|
||||
* La couleur de fond du panneau
|
||||
*/
|
||||
public final static Color BACKGROUND_COLOR = new Color(31,31,31);
|
||||
/**
|
||||
* La couleur des boutons
|
||||
*/
|
||||
public final static Color RED = new Color(255,64,64);
|
||||
|
||||
/**
|
||||
* L'entier qui représente un pion "vide"
|
||||
*/
|
||||
@ -67,11 +72,19 @@ 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() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Remet les couleurs des pions des joueurs par défaut
|
||||
*/
|
||||
public static void resetColor() {
|
||||
Constants.PLAYER_ONE_COLOR = new Color(252,21,21);
|
||||
Constants.PLAYER_TWO_COLOR = new Color(241,205,15);
|
||||
|
@ -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
|
||||
|
@ -8,12 +8,14 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.colorchooser.AbstractColorChooserPanel;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Frame;
|
||||
import java.awt.Color;
|
||||
|
||||
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Controller.ColorActionListener;
|
||||
@ -28,16 +30,19 @@ public class ColorChooserDialog extends JDialog{
|
||||
private JTextField field1;
|
||||
private JTextField field2;
|
||||
private JTextField field3;
|
||||
private int playerNumber;
|
||||
private boolean confirm = false;
|
||||
|
||||
/**
|
||||
* Crée une fenêtre modale avec pour nom "Choisissez vos noms et couleurs"
|
||||
* @param owner la {@code Frame} depuis laquelle la fenetre modale est affichée
|
||||
* @param modal specifie si la fenêtre modale bloque les interactions avec les fenêtres mères
|
||||
* @param playerNumber Nombre de joueurs
|
||||
* @see javax.swing.JDialog#JDialog(Frame, boolean)
|
||||
*/
|
||||
public ColorChooserDialog(Frame owner, boolean modal, int playerNumber) {
|
||||
super(owner, "Choisissez vos noms et couleurs",modal);
|
||||
this.playerNumber = playerNumber;
|
||||
this.setLayout(new GridBagLayout());
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
|
||||
@ -59,11 +64,25 @@ public class ColorChooserDialog extends JDialog{
|
||||
playerThreeChooser.removeChooserPanel(panelsP3[i]);
|
||||
}
|
||||
|
||||
JButton bouton = new JButton("Confirmer");
|
||||
JButton confirmButton = new JButton("Confirmer");
|
||||
confirmButton.setFocusPainted(false);
|
||||
confirmButton.setActionCommand(Constants.CONFIRM);
|
||||
JButton denyButton = new JButton("Annuler");
|
||||
denyButton.setFocusPainted(false);
|
||||
denyButton.setActionCommand(Constants.DENY);
|
||||
|
||||
JPanel panelButton = new JPanel();
|
||||
panelButton.setOpaque(false);
|
||||
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 +191,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 +201,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() {
|
||||
@ -196,11 +215,11 @@ public class ColorChooserDialog extends JDialog{
|
||||
JOptionPane.showMessageDialog(this,"Les deux couleurs sont trop proches (1,2)","Erreur ", JOptionPane.ERROR_MESSAGE);
|
||||
return false;
|
||||
}
|
||||
if(distanceBetweenP1AndP3 < 150f) {
|
||||
if(playerNumber == 3 && distanceBetweenP1AndP3 < 150f) {
|
||||
JOptionPane.showMessageDialog(this,"Les deux couleurs sont trop proches (1,3)","Erreur ", JOptionPane.ERROR_MESSAGE);
|
||||
return false;
|
||||
}
|
||||
if(distanceBetweenP2AndP3 < 150f) {
|
||||
if(playerNumber == 3 && distanceBetweenP2AndP3 < 150f) {
|
||||
JOptionPane.showMessageDialog(this,"Les deux couleurs sont trop proches (2,3)","Erreur ", JOptionPane.ERROR_MESSAGE);
|
||||
return false;
|
||||
}
|
||||
@ -212,7 +231,7 @@ public class ColorChooserDialog extends JDialog{
|
||||
JOptionPane.showMessageDialog(this,"La couleur du joueur 2 est trop sombre","Erreur ", JOptionPane.ERROR_MESSAGE);
|
||||
return false;
|
||||
}
|
||||
else if(distanceBetweenP3AndEmpty < 150f) {
|
||||
else if(playerNumber == 3 && distanceBetweenP3AndEmpty < 150f) {
|
||||
JOptionPane.showMessageDialog(this,"La couleur du joueur 3 est trop sombre","Erreur ", JOptionPane.ERROR_MESSAGE);
|
||||
return false;
|
||||
}
|
||||
@ -288,7 +307,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){
|
||||
|
||||
}
|
||||
}
|
@ -76,6 +76,9 @@ public class Pion extends JComponent{
|
||||
Pion.HIGHLIGHT_COLOR = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Paint le pion
|
||||
*/
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
Graphics2D g2 = (Graphics2D) g.create();
|
||||
|
@ -39,6 +39,7 @@ public class Puissance4Panel extends JPanel{
|
||||
/**
|
||||
* Ajoute tous les composants autres que la grille au panneau (Bouton recommencer, accueil, le nom du joueur qui joue, le score)
|
||||
* Il faut appeler cette fonction après avoir initialisé les différents variables du jeu (noms des joueurs)
|
||||
* @param title Nom du JLabel
|
||||
*/
|
||||
public void init(String title) {
|
||||
GridBagLayout gbl = new GridBagLayout();
|
||||
@ -127,12 +128,12 @@ public class Puissance4Panel extends JPanel{
|
||||
this.add(this.reset, gbc);
|
||||
|
||||
|
||||
reset.setBackground(new Color(255,64,64));
|
||||
reset.setBackground(Constants.RED);
|
||||
reset.setForeground(Color.WHITE);
|
||||
reset.setFocusPainted(false);
|
||||
reset.setBorder(new EmptyBorder(5,10,5,10));
|
||||
|
||||
menu.setBackground(new Color(255,64,64));
|
||||
menu.setBackground(Constants.RED);
|
||||
menu.setForeground(Color.WHITE);
|
||||
menu.setFocusPainted(false);
|
||||
menu.setBorder(new EmptyBorder(5,10,5,10));
|
||||
@ -202,6 +203,7 @@ public class Puissance4Panel extends JPanel{
|
||||
* @param playerTurn le tour du joueur actuel
|
||||
* @param playerOneScore le score du joueur 1
|
||||
* @param playerTwoScore le score du joueur 2
|
||||
* @param playerThreeScore le score du joueur 3
|
||||
*/
|
||||
public void setGameStatus(GameStatus status, int playerTurn, int playerOneScore, int playerTwoScore, int playerThreeScore) {
|
||||
this.grille.hover(-1);
|
||||
@ -231,6 +233,10 @@ public class Puissance4Panel extends JPanel{
|
||||
this.changeScore(playerOneScore, playerTwoScore, playerThreeScore);
|
||||
}
|
||||
|
||||
/**
|
||||
* Envoie un popup avec un message de victoire
|
||||
* @param player joueur
|
||||
*/
|
||||
public void playerWin(int player){
|
||||
switch(player){
|
||||
case 1:
|
||||
@ -264,7 +270,7 @@ public class Puissance4Panel extends JPanel{
|
||||
|
||||
/**
|
||||
* Permet de définir le nom du joueur 3
|
||||
* @param playerTwoName le nom du joueur
|
||||
* @param playerThreeName le nom du joueur
|
||||
*/
|
||||
public void setPlayerThreeName(String playerThreeName) {
|
||||
this.playerThreeName = playerThreeName;
|
||||
|
Loading…
Reference in New Issue
Block a user