BUT39Octobre/Nim/PlateauNim.java

108 lines
2.7 KiB
Java
Raw Permalink Normal View History

2024-10-09 11:47:39 +02:00
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;
2024-10-09 14:03:53 +02:00
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);
2024-10-09 11:47:39 +02:00
public PlateauNim(int allumette) {
this.allumette = allumette;
2024-10-09 12:32:16 +02:00
this.currrentPlayer = Player.JOUEUR1;
2024-10-09 11:47:39 +02:00
}
@Override
public Player getPlayer() {
return currrentPlayer;
}
@Override
2024-10-09 12:32:16 +02:00
public int getResult() {
2024-10-09 11:47:39 +02:00
if (isFinished()) {
2024-10-09 12:32:16 +02:00
if (currrentPlayer == Player.JOUEUR1) {
2024-10-09 11:47:39 +02:00
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>();
2024-10-09 14:03:53 +02:00
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);
}
2024-10-09 11:47:39 +02:00
} else {
2024-10-09 14:03:53 +02:00
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);
}
2024-10-09 11:47:39 +02:00
}
2024-10-09 14:03:53 +02:00
2024-10-09 11:47:39 +02:00
return plies.iterator();
}
@Override
2024-10-09 12:32:16 +02:00
public void doPly(Ply ply) {
PlyNim plynim = (PlyNim) ply;
allumette -= plynim.coup;
if (currrentPlayer == Player.JOUEUR1){
currrentPlayer = Player.JOUEUR2;
2024-10-09 11:47:39 +02:00
} else {
2024-10-09 12:32:16 +02:00
currrentPlayer = Player.JOUEUR1;
2024-10-09 11:47:39 +02:00
}
}
@Override
2024-10-09 12:32:16 +02:00
public void undoPly(Ply ply) {
PlyNim plynim = (PlyNim) ply;
allumette += plynim.coup;
if (currrentPlayer == Player.JOUEUR1){
currrentPlayer = Player.JOUEUR2;
} else {
currrentPlayer = Player.JOUEUR1;
}
2024-10-09 11:47:39 +02:00
}
@Override
2024-10-09 12:32:16 +02:00
public boolean isFinished() {
if (allumette == 0) {
return true;
} else {
return false;
}
2024-10-09 11:47:39 +02:00
}
2024-10-09 12:32:16 +02:00
2024-10-09 11:47:39 +02:00
}