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