Exemplo n.º 1
0
 // Metoda pro rozhodnutí zda-li je tah v souladu s pravidly
 public bool ValidMove(int row, int col, int newRow, int newCol, GameBoard board)
 {
     if (ValidPosition(row, col) && ValidPosition(newRow, newCol))
     {
         //Console.WriteLine("Valid position, Valid new position");
         if (ValidDistance(row, col, newRow, newCol))
         {
             if (board.Occupied(row, col) && !board.Frozen(row, col) && !board.Frozen(newRow, newCol))
             {
                 if (board.IsKing(row, col) && board.Occupied(newRow, newCol))
                 {
                     return(false);
                 }
                 else if (board.Occupied(newRow, newCol) && !board.Enemy(row, col, newRow, newCol))
                 {
                     return(false);
                 }
                 else
                 {
                     return(true);
                 }
             }
             else
             {
                 return(false); //Console.WriteLine("Empty or frozen field.");
             }
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false); //Console.WriteLine("Not valid position.");
     }
 }
Exemplo n.º 2
0
        public int BoardScoreSum(GameBoard gameBoard, int playerColor)
        {
            int[,] board = gameBoard.Board;

            int sum = 0;

            for (int i = 1; i < board.GetLength(0) - 1; i++)
            {
                for (int j = 1; j < board.GetLength(1) - 1; j++)
                {
                    if (!gameBoard.Frozen(i, j))
                    {
                        sum += board[i, j];
                    }

                    if (gameBoard.IsWhiteKing(i, j))
                    {
                        sum -= 15;

                        sum += CheckKingSiege(gameBoard, i, j);
                        sum -= CheckKingMarch(i, playerColor);
                    }
                    if (gameBoard.IsWhite(i, j) && !gameBoard.IsWhiteKing(i, j))
                    {
                        sum -= 10;
                        sum -= KingHunting(gameBoard, i, j);
                    }

                    if (gameBoard.IsBlackKing(i, j))
                    {
                        sum += 15;
                        sum -= CheckKingSiege(gameBoard, i, j);
                        sum += CheckKingMarch(i, playerColor);
                    }
                    if (gameBoard.IsBlack(i, j) && !gameBoard.IsBlackKing(i, j))
                    {
                        sum += 10;
                        sum += KingHunting(gameBoard, i, j);
                    }
                }
            }
            return(sum);
        }