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