// Metoda pro ohodnocení možného tahu public void EvaluateMove(int row, int col, int newRow, int newCol, GameBoard board, out int moveResult) { if (board.Position(newRow, newCol) == (int)GameConstants.States.empty) { /* * Console.WriteLine("Moved"); * board[newRow, newCol] = board[row, col]; * Empty(row, col); */ board.Move(row, col, newRow, newCol); moveResult = (int)GameConstants.MoveResult.Moved; } else if (board.Occupied(newRow, newCol) && board.Enemy(row, col, newRow, newCol)) { /* * Console.WriteLine("Freezed"); * Freeze(newRow, newCol); * Empty(row, col); */ board.Freeze(row, col, newRow, newCol); moveResult = (int)GameConstants.MoveResult.Frozen; } else { moveResult = (int)GameConstants.MoveResult.Fail; } }
// Metody pro zjištění všech možných tahů public static List <List <int> > Adjacted(int row, int col, GameBoard board) { var listAdjacted = new List <List <int> >(8); for (int dx = -1; dx <= 1; ++dx) { for (int dy = -1; dy <= 1; ++dy) { if (dx != 0 || dy != 0) { int newRow = row + dx; int newCol = col + dy; List <int> xy = new List <int> { row, col, board.Position(row, col), newRow, newCol, board.Position(newRow, newCol) }; listAdjacted.Add(xy); } } } return(listAdjacted); }
// selekce pozic pro provedení tahu public async Task Selection(int row, int col, GameBoard board, CancellationTokenSource source) { if (StartPositionSelected) // je vybrána počáteční pozice { PlayerMove[(int)GameConstants.MoveParts.newRow] = row; PlayerMove[(int)GameConstants.MoveParts.newCol] = col; PlayerMove[(int)GameConstants.MoveParts.newPosition] = board.Position(row, col); StartPositionSelected = false; await TryToPlay(board, source); // zkusí zahrát zvolený tah } else if (!StartPositionSelected) // není vybrána počáteční pozice { if (Owner(row, col, board)) // správná barva figurek { PlayerMove[(int)GameConstants.MoveParts.row] = row; PlayerMove[(int)GameConstants.MoveParts.col] = col; PlayerMove[(int)GameConstants.MoveParts.piece] = board.Position(row, col); StartPositionSelected = true; } } }