87 lines
2.1 KiB
Java
87 lines
2.1 KiB
Java
package Nim;
|
|
|
|
import java.util.Iterator;
|
|
import java.util.ArrayList;
|
|
import fr.iut_fbleau.raw_api_body.entity.*;
|
|
|
|
public class PlateauNim implements Plateau {
|
|
|
|
int allumette;
|
|
Player currrentPlayer;
|
|
Result resultat;
|
|
|
|
public PlateauNim(int allumette) {
|
|
this.allumette = allumette;
|
|
this.currrentPlayer = Player.JOUEUR1;
|
|
}
|
|
|
|
@Override
|
|
public Player getPlayer() {
|
|
return currrentPlayer;
|
|
}
|
|
|
|
@Override
|
|
public int getResult() {
|
|
if (isFinished()) {
|
|
if (currrentPlayer == Player.JOUEUR1) {
|
|
return Result.GAGNE;
|
|
} else {
|
|
return Result.PERDU;
|
|
}
|
|
} else {
|
|
throw new NullPointerException("La partie n'est pas terminée");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Iterator<Ply> givePlies() {
|
|
ArrayList<Ply> plies = new ArrayList<Ply>();
|
|
|
|
if (allumette == 1) {
|
|
plies.add(new PlyNim(1, currrentPlayer));
|
|
} else if (allumette == 2) {
|
|
plies.add(new PlyNim(1, currrentPlayer));
|
|
plies.add(new PlyNim(2, currrentPlayer));
|
|
} else {
|
|
plies.add(new PlyNim(1, currrentPlayer));
|
|
plies.add(new PlyNim(2, currrentPlayer));
|
|
plies.add(new PlyNim(3, currrentPlayer));
|
|
}
|
|
|
|
return plies.iterator();
|
|
}
|
|
|
|
@Override
|
|
public void doPly(Ply ply) {
|
|
PlyNim plynim = (PlyNim) ply;
|
|
allumette -= plynim.coup;
|
|
if (currrentPlayer == Player.JOUEUR1){
|
|
currrentPlayer = Player.JOUEUR2;
|
|
} else {
|
|
currrentPlayer = Player.JOUEUR1;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void undoPly(Ply ply) {
|
|
PlyNim plynim = (PlyNim) ply;
|
|
allumette += plynim.coup;
|
|
if (currrentPlayer == Player.JOUEUR1){
|
|
currrentPlayer = Player.JOUEUR2;
|
|
} else {
|
|
currrentPlayer = Player.JOUEUR1;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isFinished() {
|
|
if (allumette == 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
}
|