Example #1
0
        private void RestartGameState()
        {
            gameEnded         = false;
            IsPlayerRed       = radioButtonColorRed.Checked;
            IsPlayerStarting  = radioButtonStartingHuman.Checked;
            TimeToProcess     = (int)numericUpDownTimeProcess.Value;
            ExplorationFactor = (double)numericUpDownExplorationFactor.Value;
            tableLayoutPanelGamePanel.Controls.Clear();
            for (int i = 0; i < tableLayoutPanelGamePanel.ColumnCount; i++)
            {
                for (int j = 0; j < tableLayoutPanelGamePanel.RowCount; j++)
                {
                    var guiElement = new Panel
                    {
                        Dock = DockStyle.Fill,
                        BackgroundImageLayout = ImageLayout.Zoom,
                    };

                    int locali = i;
                    guiElement.Click += new EventHandler((x, y) =>
                    {
                        if (gameEnded)
                        {
                            MessageBox.Show("Please start new game!");
                            return;
                        }
                        if (MCTSLogic.GetBoard().Fields[0, locali] != FieldType.Empty)
                        {
                            MessageBox.Show("Column is full!");
                            return;
                        }
                        MCTSLogic.MakeMove(locali);
                        tableLayoutPanelGamePanel.Refresh();
                        if (MCTSLogic.IsEnd)
                        {
                            MessageBox.Show("Player has won!");
                            gameEnded = true;
                        }
                        if (gameEnded)
                        {
                            return;
                        }
                        var move = MCTSLogic.GenerateMove();
                        MCTSLogic.MakeMove(move);
                        tableLayoutPanelGamePanel.Refresh();
                        if (MCTSLogic.IsEnd)
                        {
                            MessageBox.Show("AI has won!");
                            gameEnded = true;
                        }
                    }
                                                         );

                    tableLayoutPanelGamePanel.Controls.Add(
                        guiElement,
                        i, j);
                }
            }
        }
Example #2
0
        private void tableLayoutPanelGamePanel_Paint(object sender, PaintEventArgs e)
        {
            if (MCTSLogic != null)
            {
                currentGameBoard = MCTSLogic.GetBoard();

                for (int i = 0; i < currentGameBoard.Rows; i++)
                {
                    for (int j = 0; j < currentGameBoard.Columns; j++)
                    {
                        var boardElement = tableLayoutPanelGamePanel.GetControlFromPosition(j, i);
                        if (boardElement.BackgroundImage == null)
                        {
                            switch (currentGameBoard.Fields[i, j])
                            {
                            case FieldType.Empty:
                                break;

                            case FieldType.PlayerOne:
                                boardElement.BackgroundImage =
                                    (IsPlayerStarting && IsPlayerRed) ||
                                    (!IsPlayerStarting && !IsPlayerRed)
                                        ? Resources.RedPlayer : Resources.YellowPlayer;
                                break;

                            case FieldType.PlayerTwo:
                                boardElement.BackgroundImage =
                                    (!IsPlayerStarting && IsPlayerRed) ||
                                    (IsPlayerStarting && !IsPlayerRed)
                                        ? Resources.RedPlayer : Resources.YellowPlayer;
                                break;
                            }
                        }
                    }
                }
            }
        }