BUT39Octobre/Nim/PlateauNim.java
2024-10-09 12:32:16 +02:00

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;
}
}
}