Exemple #1
0
        // zwraca informację czy wygrał lewy gracz
        private static GameState SimulateGame(int timeInMs, double firstParam, double secondParam)
        {
            var leftMcts  = new Mcts(timeInMs, firstParam);
            var rightMcts = new Mcts(timeInMs, secondParam);

            // wygenerowanie ruchu pierwszego gracza
            int leftPLayerMove = new Random(DateTime.Now.Millisecond).Next() % 7;
            int rightPlayerMove;

            while (true)
            {
                // wykonanie ruchu pierwszego gracza dla pierwszego parametru
                leftMcts.MakeMove(leftPLayerMove);
                if (leftMcts.IsEnd)
                {
                    return(leftMcts.GetBoard().State);
                }

                // wykonanie ruchu pierwszego gracza dla drugiego parametru
                rightMcts.MakeMove(leftPLayerMove);
                if (rightMcts.IsEnd)
                {
                    return(rightMcts.GetBoard().State);
                }

                // wygenerowanie ruchu drugiego gracza
                rightPlayerMove = rightMcts.GenerateMove();

                // wykonanie ruchu drugiego gracza dla pierwszego parametru
                leftMcts.MakeMove(rightPlayerMove);
                if (leftMcts.IsEnd)
                {
                    return(leftMcts.GetBoard().State);
                }

                // wykonanie ruchu drugiego gracza dla drugiego parametru
                rightMcts.MakeMove(rightPlayerMove);
                if (rightMcts.IsEnd)
                {
                    return(rightMcts.GetBoard().State);
                }

                leftPLayerMove = leftMcts.GenerateMove();
            }
        }
Exemple #2
0
        private static GameState SimulateGame(Mcts lefMcts, Mcts righMcts)
        {
            // wygenerowanie ruchu pierwszego gracza
            int leftPLayerMove;
            int rightPlayerMove;

            while (true)
            {
                leftPLayerMove = lefMcts.GenerateMove();

                // wykonanie ruchu pierwszego gracza dla pierwszego parametru
                lefMcts.MakeMove(leftPLayerMove);
                if (lefMcts.IsEnd)
                {
                    return(lefMcts.GetBoard().State);
                }

                // wykonanie ruchu pierwszego gracza dla drugiego parametru
                righMcts.MakeMove(leftPLayerMove);
                if (righMcts.IsEnd)
                {
                    return(righMcts.GetBoard().State);
                }

                // wygenerowanie ruchu drugiego gracza
                rightPlayerMove = righMcts.GenerateMove();

                // wykonanie ruchu drugiego gracza dla pierwszego parametru
                lefMcts.MakeMove(rightPlayerMove);
                if (lefMcts.IsEnd)
                {
                    return(lefMcts.GetBoard().State);
                }

                // wykonanie ruchu drugiego gracza dla drugiego parametru
                righMcts.MakeMove(rightPlayerMove);
                if (righMcts.IsEnd)
                {
                    return(righMcts.GetBoard().State);
                }
            }
        }