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

80 lines
2.8 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.Player;
import fr.iut_fbleau.GameAPI.AbstractPly;
import java.util.Scanner;
/**
* Classe principale pour jouer au jeu de Nim.
* Cette classe permet de lancer une partie entre deux joueurs.
*/
public class NimGame {
public static void main(String[] args) {
System.out.println("=== Jeu de Nim ===\n");
Scanner scanner = new Scanner(System.in);
// Demander le nombre d'allumettes
int allumettesInitiales = 0;
while (allumettesInitiales <= 0) {
System.out.print("Avec combien d'allumettes voulez-vous commencer ? (minimum 1) : ");
try {
allumettesInitiales = scanner.nextInt();
if (allumettesInitiales <= 0) {
System.out.println("Le nombre doit être positif !");
}
} catch (Exception e) {
System.out.println("Entrée invalide. Veuillez entrer un nombre.");
scanner.nextLine(); // vider le buffer
}
}
// Maximum par coup fixé à 3
int maxParCoup = 3;
NimBoard plateau = new NimBoard(allumettesInitiales, maxParCoup);
// Créer les joueurs
NimPlayer joueur1 = new NimPlayer(Player.PLAYER1);
NimBotPlayer joueur2 = new NimBotPlayer(Player.PLAYER2);
System.out.println("\nConfiguration du jeu :");
System.out.println("- Nombre d'allumettes : " + allumettesInitiales);
System.out.println("- Maximum par coup : " + maxParCoup);
System.out.println("- Règle : Le joueur qui prend la dernière allumette PERD");
System.out.println("- PLAYER1 : Humain");
System.out.println("- PLAYER2 : Bot (MiniMax avec Alpha-Beta)\n");
// Boucle de jeu
while (!plateau.isGameOver()) {
// Obtenir le coup du joueur actif
AbstractPly coup;
if (plateau.getcurrentPlayer() == Player.PLAYER1) {
coup = joueur1.giveYourMove(plateau);
} else {
coup = joueur2.giveYourMove(plateau);
}
// Jouer le coup
plateau.doPly(coup);
System.out.println("\n>>> " + coup);
}
// Afficher le résultat
System.out.println("\n=== Fin de la partie ===");
System.out.println(plateau);
// Déterminer le gagnant en utilisant l'enum Result
if (plateau.getResult() == fr.iut_fbleau.GameAPI.Result.WIN) {
System.out.println("Le PLAYER1 a gagné !");
} else if (plateau.getResult() == fr.iut_fbleau.GameAPI.Result.LOSS) {
System.out.println("Le PLAYER2 (Bot) a gagné !");
} else {
System.out.println("Match nul !");
}
}
}