void HandleAIMove() { Player player = Player.GetPlayerFromTurn(turn, player1, player2); if (player.Mode != Player.Modes.Human) { List <Tuple <int, int> > validMoves = Game.GetValidMoves(board, player.Tile); Tuple <int, int> move = null; if (validMoves.Count > 0) { if (player.Mode == Player.Modes.AILegendary) { move = Game.GetAIMove(board, 4, player.Tile); } else if (player.Mode == Player.Modes.AIHard) { move = Game.GetAIMove(board, 3, player.Tile); } else if (player.Mode == Player.Modes.AINormal) { move = Game.GetAIMove(board, 2, player.Tile); } else if (player.Mode == Player.Modes.AIEasy) { move = Game.GetMaxScoreMove(board, player.Tile); } } HandleNextMove(move); } }
private void cellButton_Click(object sender, RoutedEventArgs e) { Player currentPlayer = Player.GetPlayerFromTurn(turn, player1, player2); if (currentPlayer.Mode == Player.Modes.Human) { int senderIndex = BoardUniformGrid.Children.IndexOf(sender as UIElement); Tuple <int, int> move = Game.ToIndex2D(senderIndex); HandleNextMove(move); } }
void RenderBoard(byte[,] board) { if (animationPaused) { animationPending = true; return; } bool changesOccurred = false; for (int index = 0; index < 64; index++) { Tuple <int, int> index2D = Game.ToIndex2D(index); int x = index2D.Item1; int y = index2D.Item2; byte value = board[x, y]; if (value == Game.White || value == Game.Black || value == Game.Empty) { Button cellButton = BoardUniformGrid.Children[index] as Button; cellButton.Tag = Game.ValueAsString(value); changesOccurred = true; } } if (changesOccurred) { animationPaused = true; animationTimer.Start(); } Player currentPlayer = Player.GetPlayerFromTurn(turn, player1, player2); if (currentPlayer == player1) { Player1Display.IsEnabled = true; Player2Display.IsEnabled = false; } else { Player1Display.IsEnabled = false; Player2Display.IsEnabled = true; } Player1Score.Text = Game.GetScore(board, Game.White).ToString(); Player2Score.Text = Game.GetScore(board, Game.Black).ToString(); //Trace.WriteLine(Game.GenerateString(board)); }
void HandleNextMove(Tuple <int, int> move) { if (Game.GetWinner(board) == Game.Empty) { Player currentPlayer = Player.GetPlayerFromTurn(turn, player1, player2); List <Tuple <int, int> > validMoves = Game.GetValidMoves(board, currentPlayer.Tile); if (validMoves.Count > 0 && move != null) { if (validMoves.Contains(move)) { Game.MakeMove(board, move, currentPlayer.Tile); boardHistories.Add(board.Clone() as byte[, ]); turn++; RenderBoard(board); } else { return; } } else { turn++; } if (Game.GetWinner(board) != Game.Empty) { HandleWinner(); } Player nextPlayer = Player.GetPlayerFromTurn(turn, player1, player2); if (nextPlayer.Mode != Player.Modes.Human) { HandleAIMove(); } } }