/// <summary> /// Calcul le poids des cases de la matrice passée en argument /// en fonction de la présence d'un pion noir ou blanc. /// Le paramètre white permet de définir ce paramètre /// </summary> /// <returns>The matrice value.</returns> /// <param name="mat_eval">Mat eval.</param> /// <param name="white">If set to <c>true</c> white.</param> private int EvaluateMatriceValue(int[,] mat_eval, bool white) { int typeCoin = white ? 0 : 1; int value = 0; for (int c = 0; c < 8; c++) { for (int l = 0; l < 8; l++) { if (board.GetBoard()[c, l] == typeCoin) { value += mat_eval[c, l]; } } } return(value); }
/// <summary> /// Test de l'IA en mode console. /// </summary> /// <param name="args"></param> static void Main(string[] args) { Board boardWhite = new Board(); Board boardBlack = new Board(); Board boardArbitre = new Board(); bool finished = false; bool whiteTurn = false; while (!finished) { Board turnBoard = whiteTurn ? boardWhite : boardBlack; var move = turnBoard.GetNextMove(boardArbitre.GetBoard(), 4, whiteTurn); if (move.Item1 == -1 && move.Item2 == -1) { PrintPass(whiteTurn); } else { if (boardArbitre.IsPlayable(move.Item1, move.Item2, whiteTurn)) { boardArbitre.PlayMove(move.Item1, move.Item2, whiteTurn); boardBlack.PlayMove(move.Item1, move.Item2, whiteTurn); boardWhite.PlayMove(move.Item1, move.Item2, whiteTurn); } else { PrintError(move, whiteTurn); break; } PrintBoard(boardArbitre.GetBoard(), whiteTurn, move.Item1, move.Item2); } whiteTurn = !whiteTurn; finished = boardArbitre.IsFinished(); //Console.ReadKey(); } PrintFinish(boardArbitre); Console.ReadKey(); }
/// <summary> /// Check si la partie est terminée en fonction du plateau de jeu passé en paramètres /// </summary> /// <param name="board">Etat du plateau de jeu</param> /// <returns>True si la partie est terminée</returns> public static bool Final(Board board) { for (int c = 0; c < 8; c++) { for (int l = 0; l < 8; l++) { if (board.GetBoard()[c, l] > -1) { // Cellule prise continue; } else { if (board.IsPlayable(c, l, true) || board.IsPlayable(c, l, false)) { // Un des deux joueurs peut encore jouer return(false); } } } } // Aucune possibilité return(true); }
/// <summary> /// Constructeur de copie. /// </summary> /// <param name="source"></param> public Board(Board source) : this(source.GetBoard()) { }