BUT39Octobre/Nim/PlateauNim.java

108 lines
2.7 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;
PlyNim j1_1 = new PlyNim(1,Player.JOUEUR1);
PlyNim j1_2 = new PlyNim(2,Player.JOUEUR1);
PlyNim j1_3 = new PlyNim(3,Player.JOUEUR1);
PlyNim j2_1 = new PlyNim(1,Player.JOUEUR2);
PlyNim j2_2 = new PlyNim(2,Player.JOUEUR2);
PlyNim j2_3 = new PlyNim(3,Player.JOUEUR2);
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 (currrentPlayer == Player.JOUEUR1){
if (allumette == 1) {
plies.add(j1_1);
} else if (allumette == 2) {
plies.add(j1_1);
plies.add(j1_2);
} else {
plies.add(j1_1);
plies.add(j1_2);
plies.add(j1_3);
}
} else {
if (allumette == 1) {
plies.add(j2_1);
} else if (allumette == 2) {
plies.add(j2_1);
plies.add(j2_2);
} else {
plies.add(j2_1);
plies.add(j2_2);
plies.add(j2_3);
}
}
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;
}
}
}