diff --git a/projetAgile/Makefile b/projetAgile/Makefile index ff57c66..40ef7a4 100644 --- a/projetAgile/Makefile +++ b/projetAgile/Makefile @@ -20,8 +20,7 @@ Model = build/$(PACKAGE_PATH)/Puissance4/Model/GrilleModel.class Controller = build/$(PACKAGE_PATH)/Puissance4/Controller/GrilleMouseListener.class \ build/$(PACKAGE_PATH)/Puissance4/Controller/ModelEventListener.class \ - build/$(PACKAGE_PATH)/Puissance4/Controller/ResetGame.class \ - build/$(PACKAGE_PATH)/Menu/Controleur/ObservateurAccueil.class + build/$(PACKAGE_PATH)/Puissance4/Controller/ResetGame.class #BUT PAR DEFAUT ArgileGames.jar : build/$(PACKAGE_PATH)/Main.class diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java index 8247bd8..43805d6 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/LancementPartie.java @@ -1,14 +1,26 @@ package fr.iutfbleau.projetAgile.Puissance4; -import javax.swing.*; import fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller; import fr.iutfbleau.projetAgile.Puissance4.View.Grille; import fr.iutfbleau.projetAgile.Puissance4.Model.GrilleModel; import java.awt.event.ActionListener; import java.util.concurrent.CancellationException; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +/** + * Classe qui initialise une partie de Puissance 4 + */ public class LancementPartie { + private Puissance4Controller P4; + /** + * Demande aux utilisateurs d'entrer leur nom puis initialise une partie + * @param fenetre La fenetre dans laquelle le panneau sera ajouté. Peut-être null mais la fenetre de dialogue ne sera pas centré avec la fenetre du jeu + * @throws CancellationException Renvoie une exception si les utilisateurs annule le lancement de la partie + */ public LancementPartie(JFrame fenetre) throws CancellationException{ boolean nameCorrect = false; JTextField field1 = new JTextField("Joueur 1"); @@ -42,13 +54,20 @@ public class LancementPartie { this.P4 = new Puissance4Controller(g, m); this.P4.changeName(J1, J2); this.P4.initPanel(); - } + /** + * Ajoute un ActionListener pour le bouton "accueil" du panneau du Puissance 4 + * @param l l'ActionListener à ajouter + */ public void accueilButton(ActionListener l){ this.P4.accueilButton(l); } + /** + * Retourne le panneau du jeu (la vue) + * @return JPanel qui contient le Puissance 4 + */ public JPanel getPanel(){ return this.P4.getPanel(); } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java index 66d603a..6434fdc 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Grille.java @@ -113,7 +113,7 @@ public class Grille extends JPanel{ } } else { - for(int y = row - 1; y > 0; y--) { + for(int y = row - 1; y >= 0; y--) { if(this.grille[column][y].getPlayer() == Constants.EMPTY_PLAYER) { if(this.grille[column][y] != this.lastHoveredPion) { if(this.lastHoveredPion != null) { @@ -123,10 +123,13 @@ public class Grille extends JPanel{ this.lastHoveredPion = this.grille[column][y]; this.lastHoveredPion.setHover(true); this.lastHoveredPion.repaint(); - break; + } - else - break; + break; + } + else if (y == 0 && this.grille[column][y] == this.lastHoveredPion) { //Dernier pion de la colonne ne doit plus être survolé + this.lastHoveredPion.setHover(false); + this.lastHoveredPion.repaint(); } } } diff --git a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java index 4832b27..62ecdbb 100644 --- a/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java +++ b/projetAgile/src/fr/iutfbleau/projetAgile/Puissance4/View/Puissance4Panel.java @@ -32,6 +32,10 @@ public class Puissance4Panel extends JPanel{ this.grille = grille; } + /** + * 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) + */ public void init() { GridBagLayout gbl = new GridBagLayout(); this.setLayout(gbl); @@ -107,21 +111,36 @@ public class Puissance4Panel extends JPanel{ menu.setBorder(new EmptyBorder(5,10,5,10)); } + /** + * Permet de définir le nom du joueur 1 + */ public void setPlayerOneName(String playerOneName) { this.playerOneName = playerOneName; } - + + /** + * Permet de définir le nom du joueur 2 + */ public void setPlayerTwoName(String playerTwoName) { this.playerTwoName = playerTwoName; } + /** + * Retourne la grille du Puissance 4 + * @return La grille du Puissance 4 + */ public Grille getGrille() { return grille; } + /** + * Ajoute un ActionListener au bouton recommencer + * @param l L'ActionListener à ajouter + */ public void resetButton(ActionListener l) { this.reset.addActionListener(l); } + public void accueilButton(ActionListener l){ this.menu.addActionListener(l); }