Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }