ajout TP3
This commit is contained in:
66
TP3/fr/iut_fbleau/Nim/NimPlayer.java
Normal file
66
TP3/fr/iut_fbleau/Nim/NimPlayer.java
Normal file
@@ -0,0 +1,66 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user