Example #1
0
        /// <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);
        }
Example #2
0
        /// <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();
        }
Example #3
0
 /// <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);
 }
Example #4
0
 /// <summary>
 /// Constructeur de copie.
 /// </summary>
 /// <param name="source"></param>
 public Board(Board source) : this(source.GetBoard())
 {
 }