Encore un peu de javadoc
This commit is contained in:
parent
848954ab25
commit
1afa4ab7d9
@ -4,6 +4,9 @@ import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
/**
|
||||
* Interface qui doit être implémenté par les différents jeux
|
||||
*/
|
||||
public interface Jeu {
|
||||
/**
|
||||
* Ajoute un ActionListener pour un bouton "accueil" pour revenir au menu
|
||||
|
@ -5,13 +5,25 @@ import fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
/**
|
||||
* Classe qui implémente un ActionListener et qui "écoute" le bouton confirmé du ColorChooserDialog
|
||||
*/
|
||||
public class ColorActionListener implements ActionListener{
|
||||
private ColorChooserDialog dialog;
|
||||
|
||||
/**
|
||||
* Constructeur du Listener
|
||||
* @param c le ColorChooserDialog qu'il écoute
|
||||
*/
|
||||
public ColorActionListener(ColorChooserDialog c) {
|
||||
this.dialog = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#isNameValid()
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#isColorValid()
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.View.ColorChooserDialog#setConfirm()
|
||||
*/
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if(this.dialog.isColorValid() && this.dialog.isNameValid()) {
|
||||
|
@ -7,6 +7,9 @@ import javax.swing.event.ChangeListener;
|
||||
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants;
|
||||
|
||||
/**
|
||||
* Classe inutile, peut être remplacée par l'appuie sur le bouton confirmé (A chanegr Jeudi)
|
||||
*/
|
||||
public class ColorChooserListener implements ChangeListener {
|
||||
|
||||
private JComponent composant;
|
||||
|
@ -4,20 +4,34 @@ import java.awt.event.MouseEvent;
|
||||
import javax.swing.event.MouseInputAdapter;
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants;
|
||||
|
||||
/**
|
||||
* Classe qui hérite de MouseInputAdapter qui écoute la souris sur le panneau du jeu
|
||||
*/
|
||||
public class GrilleMouseListener extends MouseInputAdapter{
|
||||
|
||||
private Puissance4Controller controller;
|
||||
|
||||
/**
|
||||
* Constructeur de la classe
|
||||
* @param p le controleur du jeu
|
||||
*/
|
||||
public GrilleMouseListener(Puissance4Controller p) {
|
||||
this.controller = p;
|
||||
}
|
||||
|
||||
/**
|
||||
* Si la souris bouge et que l'option de survol est activé, affiche le survol
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#hoverGrille(int)
|
||||
*/
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
if(Constants.DRAW_POSITION)
|
||||
this.controller.hoverGrille(e.getX());
|
||||
}
|
||||
|
||||
/**
|
||||
* Si la bouton gauche de la souris est cliqué vérifie si on peut placer un pion dans la grille
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#verifyColumn(int)
|
||||
*/
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
if(e.getButton() == MouseEvent.BUTTON1) {
|
||||
@ -26,6 +40,10 @@ public class GrilleMouseListener extends MouseInputAdapter{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Si la souris sort du "cadre" de la grille, efface le survol
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#hoverGrille(int)
|
||||
*/
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
this.controller.hoverGrille(-1);
|
||||
|
@ -38,6 +38,10 @@ public class Puissance4Controller {
|
||||
this.modele.addGridListener(modelListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialise la vue, doit être appelé après avoir configuré le modèle (nom des joueurs)
|
||||
* @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#changeName(String, String)
|
||||
*/
|
||||
public void initPanel() {
|
||||
this.panel.init();
|
||||
this.panel.changeHoverColor(this.modele.getPlayerTurn());
|
||||
@ -45,6 +49,12 @@ public class Puissance4Controller {
|
||||
this.panel.changeScore(this.modele.getPlayerOneScore(), this.modele.getPlayerTwoScore());
|
||||
}
|
||||
|
||||
/**
|
||||
* Réinitialise la partie :
|
||||
* - le status de la partie (en PLAYING)
|
||||
* - la grille du modèle
|
||||
* - la vue
|
||||
*/
|
||||
public void reset() {
|
||||
if(this.modele.getGameStatus() == GameStatus.PLAYING) {
|
||||
int confirmation = JOptionPane.showConfirmDialog(this.panel, "Une partie est en cours ! Etes-vous sûr de vouloir recommencer ?", "Recommencer", JOptionPane.YES_NO_OPTION);
|
||||
@ -68,6 +78,11 @@ public class Puissance4Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche le survol de la grille
|
||||
* @param x la position x de la souris sur la grille
|
||||
* Si x est égal à -1 efface le survol
|
||||
*/
|
||||
public void hoverGrille(int x) {
|
||||
if(this.modele.getGameStatus() == GameStatus.PLAYING) {
|
||||
if(x == -1) {
|
||||
@ -79,6 +94,10 @@ public class Puissance4Controller {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet de récupérer le panneau du jeu
|
||||
* @return le panneau du jeu
|
||||
*/
|
||||
public JPanel getPanel() {
|
||||
return this.panel;
|
||||
}
|
||||
@ -92,6 +111,11 @@ public class Puissance4Controller {
|
||||
this.panel.accueilButton(l);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public void changeName(String J1, String J2) {
|
||||
this.modele.setPlayerOneName(J1);
|
||||
this.modele.setPlayerTwoName(J2);
|
||||
|
@ -3,27 +3,40 @@ package fr.iutfbleau.projetAgile.Puissance4.View;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JColorChooser;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.colorchooser.AbstractColorChooserPanel;
|
||||
import java.awt.*;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Frame;
|
||||
|
||||
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Controller.ColorActionListener;
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Controller.ColorChooserListener;
|
||||
import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants;
|
||||
|
||||
/**
|
||||
* JDialog personnalisé permettant de choisir un nom et une couleur pour deux joueur
|
||||
*/
|
||||
public class ColorChooserDialog extends JDialog{
|
||||
|
||||
private JTextField field1;
|
||||
private JTextField field2;
|
||||
private boolean confirm = false;
|
||||
|
||||
public ColorChooserDialog(JFrame fenetre, boolean b) {
|
||||
super(fenetre, "Choisissez vos noms et couleurs",b);
|
||||
/**
|
||||
* 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
|
||||
* @see javax.swing.JDialog#JDialog(Frame, boolean)
|
||||
*/
|
||||
public ColorChooserDialog(Frame owner, boolean modal) {
|
||||
super(owner, "Choisissez vos noms et couleurs",modal);
|
||||
this.setLayout(new GridBagLayout());
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
|
||||
@ -123,11 +136,15 @@ public class ColorChooserDialog extends JDialog{
|
||||
|
||||
this.pack();
|
||||
this.setResizable(false);
|
||||
this.setLocationRelativeTo(fenetre);
|
||||
this.setLocationRelativeTo(owner);
|
||||
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
}
|
||||
|
||||
//Voir https://en.wikipedia.org/wiki/Color_difference
|
||||
/**
|
||||
* 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
|
||||
* {@link https://en.wikipedia.org/wiki/Color_difference Wikipedia}
|
||||
*/
|
||||
public boolean isColorValid() {
|
||||
double distanceBetweenP1AndP2 = Math.sqrt(Math.pow(Constants.PLAYER_TWO_COLOR.getRed() - Constants.PLAYER_ONE_COLOR.getRed(), 2) + Math.pow(Constants.PLAYER_TWO_COLOR.getGreen() - Constants.PLAYER_ONE_COLOR.getGreen(), 2) + Math.pow(Constants.PLAYER_TWO_COLOR.getBlue() - Constants.PLAYER_ONE_COLOR.getBlue(), 2));
|
||||
double distanceBetweenP1AndEmpty = Math.sqrt(Math.pow(Constants.EMPTY_COLOR.getRed() - Constants.PLAYER_ONE_COLOR.getRed(), 2) + Math.pow(Constants.EMPTY_COLOR.getGreen() - Constants.PLAYER_ONE_COLOR.getGreen(), 2) + Math.pow(Constants.EMPTY_COLOR.getBlue() - Constants.PLAYER_ONE_COLOR.getBlue(), 2));
|
||||
@ -147,6 +164,10 @@ public class ColorChooserDialog extends JDialog{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si les noms sont valides, c'est à dire qu'ils ne sont pas vides, ni identiques
|
||||
* @return true si les noms sont valides, false sinon.
|
||||
*/
|
||||
public boolean isNameValid() {
|
||||
String J1 = null;
|
||||
String J2 = null;
|
||||
@ -171,18 +192,36 @@ public class ColorChooserDialog extends JDialog{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Permet de récupérer le nom inscrit pour le joueur 1
|
||||
* @return un {@code String} correspondant au nom du joueur 1
|
||||
*/
|
||||
public String getPlayerOneName() {
|
||||
return this.field1.getText();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permet de récupérer le nom inscrit pour le joueur 2
|
||||
* @return un {@code String} correspondant au nom du joueur 2
|
||||
*/
|
||||
public String getPlayerTwoName() {
|
||||
return this.field2.getText();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permet de confirmer la choix de l'utilisateur
|
||||
* @return un {@code String} correspondant au nom du joueur 1
|
||||
*/
|
||||
public void setConfirm(boolean b) {
|
||||
this.confirm = b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche le JDialog et renvoie le choix de l'utilisateur
|
||||
* @return true si l'uilisateur a confirmé son choix, false sinon
|
||||
*/
|
||||
public boolean getChoice() {
|
||||
this.setVisible(true);
|
||||
return this.confirm;
|
||||
|
@ -13,14 +13,26 @@ public class Pion extends JComponent{
|
||||
private int player;
|
||||
private boolean hover = false;
|
||||
|
||||
/**
|
||||
* Dimension minimum d'un pion
|
||||
* @return la {@code Dimension} minimale d'un pion
|
||||
*/
|
||||
public static Dimension getPionMinimumSize() {
|
||||
return new Dimension(80,80);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dimension maximale d'un pion
|
||||
* @return la {@code Dimension} maximale d'un pion
|
||||
*/
|
||||
public static Dimension getPionMaximumSize() {
|
||||
return new Dimension(150,150);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dimension préférée d'un pion
|
||||
* @return la {@code Dimension} préférée d'un pion
|
||||
*/
|
||||
public static Dimension getPionPreferredSize() {
|
||||
return new Dimension(120,120);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user