83 lines
2.3 KiB
Java
83 lines
2.3 KiB
Java
package fr.iut_fbleau.Avalam;
|
|
|
|
import fr.iut_fbleau.GameAPI.AbstractBoard;
|
|
import fr.iut_fbleau.GameAPI.AbstractPly;
|
|
import fr.iut_fbleau.GameAPI.Player;
|
|
import fr.iut_fbleau.GameAPI.Result;
|
|
import fr.iut_fbleau.GameAPI.IBoard;
|
|
|
|
import java.util.Iterator;
|
|
import java.util.ArrayList;
|
|
import java.util.Deque;
|
|
import java.util.ArrayDeque;
|
|
|
|
public class AvalamBoard extends AbstractBoard {
|
|
|
|
private int max_height = 5;
|
|
private Result result;
|
|
private boolean gameOver;
|
|
private int array_length = 9;
|
|
private ArrayList<Integer>[][] grid = new ArrayList[this.array_length][this.array_length];
|
|
|
|
public AvalamBoard(){
|
|
super(Player.PLAYER1, new ArrayDeque<>());
|
|
|
|
//création du tableau
|
|
|
|
this.gameOver = false;
|
|
this.result = null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isGameOver() {
|
|
return this.gameOver;
|
|
}
|
|
|
|
@Override
|
|
public Result getResult() {
|
|
return this.result;
|
|
}
|
|
|
|
public boolean In_range(int x_tower_play, int y_tower_play, int x_tower_destination, int x_tower_destination){
|
|
boolean in_table = true;
|
|
if (x_tower_play >= 0 && x_tower_play < 9){
|
|
in_table = false;
|
|
}
|
|
else if (y_tower_play >= 0 && y_tower_play < 9){
|
|
in_table = false;
|
|
}
|
|
else if (x_tower_destination >= 0 && x_tower_destination < 9){
|
|
in_table = false;
|
|
}
|
|
else if (x_tower_destination >= 0 && x_tower_destination < 9){
|
|
in_table = false;
|
|
}
|
|
return in_table;
|
|
}
|
|
|
|
@Override
|
|
public boolean isLegal(AbstractPly c, int x_tower_play, int y_tower_play, int x_tower_destination, int x_tower_destination) {
|
|
if (this.gameOver) {
|
|
throw new NullPointerException("Le jeu est terminé");
|
|
}
|
|
|
|
if (!(c instanceof NimPly)) {
|
|
return false;
|
|
}
|
|
|
|
NimPly coup = (NimPly) c;
|
|
|
|
if (coup.getPlayer() != getCurrentPlayer()) {
|
|
return false;
|
|
}
|
|
|
|
if (In_range(x_tower_play, y_tower_play, x_tower_destination, x_tower_destination)){
|
|
return false;
|
|
}
|
|
|
|
// Vérifier que le nombre d'allumettes est valide
|
|
int nbAllumettes = coup.getNombreAllumettesPrises();
|
|
return // modifier IsgameOver
|
|
}
|
|
|
|
} |