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 givePlies() { ArrayList plies = new ArrayList(); 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; } } }