private int Minimax(List <string> board, int depth, bool isMaximizing) { var result = _judge.CheckWinner(board); if (result != "") { return(_scores[result]); } if (isMaximizing) { var bestScore = int.MinValue; for (var i = 0; i < 9; i++) { if (board[i] != "") { continue; } board[i] = Form1.BotSymbol; var score = Minimax(board, depth + 1, false); board[i] = ""; bestScore = Math.Max(bestScore, score); } return(bestScore); } else { var bestScore = int.MaxValue; for (var i = 0; i < 9; i++) { if (board[i] != "") { continue; } board[i] = Form1.PlayerSymbol; var score = Minimax(board, depth + 1, true); board[i] = ""; bestScore = Math.Min(bestScore, score); } return(bestScore); } }
private void CheckGameEnd() { label.Text = _judge.CheckWinner(_board); if (label.Text == "") { return; } if (label.Text != Tie) { label.Text = string.Format(Win, label.Text); } foreach (Control control in Controls) { control.Enabled = !(control is Button); } }