|
|
|
@ -7,25 +7,56 @@ import model.cellule.créateur.CreateurCellule;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Représentation du plateau de jeu
|
|
|
|
|
* @author Yohann Breuil
|
|
|
|
|
* @author Allan Point
|
|
|
|
|
*/
|
|
|
|
|
public class Plateau implements PrototypePlateau{
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Pour créer corréctement des cellules
|
|
|
|
|
* @see CreateurCellule
|
|
|
|
|
*/
|
|
|
|
|
private CreateurCellule createurCellule;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Propriété qui permet de mettre en relation le nombre de colones avec la vue
|
|
|
|
|
*/
|
|
|
|
|
private IntegerProperty colone = new SimpleIntegerProperty();
|
|
|
|
|
public int getColone() { return colone.get();}
|
|
|
|
|
public void setColone(int valeur) { colone.set(valeur); resetGrille(valeur, getLigne());}
|
|
|
|
|
public IntegerProperty coloneProperty() { return colone; }
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Propriété qui permet de mettre en relation le nombre de ligne avec la vue
|
|
|
|
|
*/
|
|
|
|
|
private IntegerProperty ligne = new SimpleIntegerProperty();
|
|
|
|
|
public int getLigne() { return ligne.get(); }
|
|
|
|
|
public void setLigne(int valeur ) { ligne.set(valeur); resetGrille(getColone(), valeur);}
|
|
|
|
|
public IntegerProperty ligneProperty() { return ligne; }
|
|
|
|
|
|
|
|
|
|
//private ObservableList<List<Cellule>> grilleObs = FXCollections.observableArrayList();
|
|
|
|
|
/**
|
|
|
|
|
* Représentation du plateau dans une liste à 2 dimention
|
|
|
|
|
*/
|
|
|
|
|
private ListProperty<List<Cellule>> grille = new SimpleListProperty<>();
|
|
|
|
|
public ListProperty<List<Cellule>> getGrille() { return (ListProperty<List<Cellule>>) grille.get(); }
|
|
|
|
|
public void setGrille(ListProperty<List<Cellule>> cells) {grille.set(cells);}
|
|
|
|
|
public ReadOnlyListProperty grilleProperty() { return grille;}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Enssemble des cellules vivante du plateau
|
|
|
|
|
* @see CellulesVivantes
|
|
|
|
|
*/
|
|
|
|
|
private CellulesVivantes cellulesVivantes;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Récuperer une cellule sur le plateau
|
|
|
|
|
* @param x Coordonée x
|
|
|
|
|
* @param y Coordonée y
|
|
|
|
|
* @return La cellule positioné en (x; y)
|
|
|
|
|
* @throws IllegalArgumentException x et y doivent être > 0 et respéctivement inferieur au nombre de colones et de ligne
|
|
|
|
|
*/
|
|
|
|
|
public Cellule getCell(int x, int y) throws IllegalArgumentException{
|
|
|
|
|
if(x < 0 || y < 0) {
|
|
|
|
|
throw new IllegalArgumentException("X ou Y est inférieur à 0");
|
|
|
|
@ -39,9 +70,18 @@ public class Plateau implements PrototypePlateau{
|
|
|
|
|
return grille.get().get(y).get(x);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Netoyer la grille
|
|
|
|
|
*/
|
|
|
|
|
public void resetGrille(){
|
|
|
|
|
resetGrille(getColone(), getLigne());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Créer une nouvelle grille
|
|
|
|
|
* @param colone nombre de colone de la grille
|
|
|
|
|
* @param ligne nombre de ligne de la grille
|
|
|
|
|
*/
|
|
|
|
|
public void resetGrille(int colone, int ligne){
|
|
|
|
|
setGrille(createurCellule.creerCellules(colone, ligne, cellulesVivantes));
|
|
|
|
|
}
|
|
|
|
@ -50,10 +90,23 @@ public class Plateau implements PrototypePlateau{
|
|
|
|
|
createurCellule = new CreateurCellule(0, 0);
|
|
|
|
|
cellulesVivantes = new CellulesVivantes();
|
|
|
|
|
setGrille(new SimpleListProperty<>());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param colone Nombre de colones du plateau
|
|
|
|
|
* @param ligne Nombre de lignes du plateau
|
|
|
|
|
*/
|
|
|
|
|
public Plateau(int colone, int ligne) {
|
|
|
|
|
this(colone, ligne, new CellulesVivantes());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param colone Nombre de colone du plateau
|
|
|
|
|
* @param ligne Nombre de ligne du plateau
|
|
|
|
|
* @param observer CellulesVivantes qui veux observer les cellules crées
|
|
|
|
|
*/
|
|
|
|
|
public Plateau(int colone, int ligne, CellulesVivantes observer) {
|
|
|
|
|
createurCellule = new CreateurCellule(colone, ligne);
|
|
|
|
|
setLigne(ligne);
|
|
|
|
@ -62,12 +115,22 @@ public class Plateau implements PrototypePlateau{
|
|
|
|
|
setGrille(createurCellule.creerCellules(cellulesVivantes));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param colone Nombre de colones du plateau
|
|
|
|
|
* @param ligne Nombre de lignes du plateau
|
|
|
|
|
* @param cellules Liste en 2 dimentions de cellules
|
|
|
|
|
*/
|
|
|
|
|
public Plateau(int colone, int ligne, ListProperty<List<Cellule>> cellules)
|
|
|
|
|
{
|
|
|
|
|
this(colone, ligne);
|
|
|
|
|
setGrille(cellules);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Clonne un plateau
|
|
|
|
|
* @return Le même plateau mais avec une référence différente
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public Plateau cloner() {
|
|
|
|
|
return new Plateau(getColone(), getLigne(), getGrille());
|
|
|
|
|