Exemplo n.º 1
0
        public void drawGameState()
        {
            this.pieceSize = Math.Min(box.Width / game.sizeX, box.Height / game.sizeY);
            g.Clear(background);
            int[] triplets = AlphaBetaEngine.getTripletsCount(game);
            int[] bonuses  = AlphaBetaEngine.getPositionBonuses(game);
            int   score    = triplets[0] * 100 + bonuses[0] - triplets[1] * 100 - bonuses[1];

            drawGrid();
            g.DrawString((triplets[0] * 100 + bonuses[0]) + "\t" + (triplets[1] * 100 + bonuses[1]) + "\t" + (score > 0 ? "+" : "") + score, new Font("Arial", 12), Brushes.Black, 0, 0);
            for (int i = 0; i < game.sizeX; i++)
            {
                for (int j = 0; j < game.sizeY; j++)
                {
                    if (game.board[i, j] != null)
                    {
                        Brush b = game.board[i, j] == true ? FirstPlayer : SecondPlayer;
                        g.FillEllipse(b, i * pieceSize, (game.sizeY - j - 1) * pieceSize, pieceSize, pieceSize);
                    }
                }
            }
            for (int i = game.sizeY - 1; i >= 0; i--)
            {
                if (game.board[game.lastMove, i] != null)
                {
                    g.FillEllipse(Brushes.Black, (game.lastMove + 0.25f) * pieceSize, (game.sizeY - i - 0.75f) * pieceSize, pieceSize / 2, pieceSize / 2);
                    break;
                }
            }
            box.Invoke(rm);
        }
Exemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            sizeX = int.Parse(SizeXcomboBox.Text);
            sizeY = int.Parse(SizeYcomboBox.Text);

            switch (RedMainComboBox.Text)
            {
            case "Monte Carlo engine":
                first = new MCEngine(int.Parse(RedAddComboBox.Text), sizeX, sizeY);
                break;

            case "Random engine":
                first = new RandomPlayer(sizeX, sizeY);
                break;

            case "Human":
                first = new HumanPlayer();
                break;

            case "Alpha-Beta engine":
                first = new AlphaBetaEngine(sizeX, sizeY, int.Parse(RedAddComboBox.Text), false);
                break;

            case "Alpha-Beta engine EXPERIMENTAL":
                first = new AlphaBetaExperimentalEngine(sizeX, sizeY, int.Parse(RedAddComboBox.Text), false);
                break;
            }

            switch (BlueMainComboBox2.Text)
            {
            case "Monte Carlo engine":
                second = new MCEngine(int.Parse(BlueAddComboBox.Text), sizeX, sizeY);
                break;

            case "Random engine":
                second = new RandomPlayer(sizeX, sizeY);
                break;

            case "Human":
                second = new HumanPlayer();
                break;

            case "Alpha-Beta engine":
                second = new AlphaBetaEngine(sizeX, sizeY, int.Parse(BlueAddComboBox.Text), false);
                break;

            case "Alpha-Beta engine EXPERIMENTAL":
                second = new AlphaBetaExperimentalEngine(sizeX, sizeY, int.Parse(BlueAddComboBox.Text), false);
                break;
            }
            this.Close();
            mainForm.start(sizeX, sizeY, first, second);
        }