Files
BUT3-JEU/TP3/fr/iut_fbleau/Nim/NimPlayer.java

67 lines
2.1 KiB
Java
Raw Permalink Normal View History

2025-10-09 10:20:53 +02:00
package fr.iut_fbleau.Nim;
import fr.iut_fbleau.GameAPI.AbstractGamePlayer;
import fr.iut_fbleau.GameAPI.AbstractPly;
import fr.iut_fbleau.GameAPI.IBoard;
import fr.iut_fbleau.GameAPI.Player;
import java.util.Scanner;
import java.util.Iterator;
/**
* Représente un joueur humain pour le jeu de Nim.
*/
public class NimPlayer extends AbstractGamePlayer {
private Player joueur;
private Scanner scanner;
public NimPlayer(Player joueur) {
this.joueur = joueur;
this.scanner = new Scanner(System.in);
}
@Override
public AbstractPly giveYourMove(IBoard p) {
if (!(p instanceof NimBoard)) {
throw new IllegalArgumentException("Le plateau doit être un NimBoard");
}
NimBoard plateau = (NimBoard) p;
System.out.println("\n" + plateau);
System.out.println("C'est ton tour joueur : " + this.joueur);
// Afficher les coups possibles
System.out.println("Coups possibles :");
Iterator<AbstractPly> coups = plateau.iterator();
int compteur = 1;
while (coups.hasNext()) {
NimPly coup = (NimPly) coups.next();
System.out.println(" " + compteur + ". Retirer " + coup.getNombreAllumettesPrises() + " allumette(s)");
compteur++;
}
// Demander au joueur de choisir
int maxAllumettes = Math.min(plateau.getMaxParCoup(), plateau.getAllumettesRestantes());
int choix = -1;
while (choix < 1 || choix > maxAllumettes) {
System.out.print("Combien d'allumettes voulez-vous retirer ? (1-" + maxAllumettes + ") : ");
try {
choix = scanner.nextInt();
if (choix < 1 || choix > maxAllumettes) {
System.out.println("Choix invalide. Veuillez choisir entre 1 et " + maxAllumettes);
}
} catch (Exception e) {
System.out.println("Entrée invalide. Veuillez entrer un nombre.");
scanner.nextLine(); // vider le buffer
}
}
return new NimPly(this.joueur, choix);
}
}