// 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."); } }
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); }