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 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); } }