Пример #1
0
        /*
         * play a random playout from node C. This step is sometimes also
         * called playout or rollout
         */
        private static int Simulate(Node current)
        {
            Player playerOne = new Player(true, true, PlayStrategy.Random);

            playerOne.Cards = current.Hand;
            playerOne.Score = current.OurScore;
            Player playerTwo = new Player(true, true, PlayStrategy.Random);

            playerTwo.Cards = current.AssignedOpponentCards;
            playerTwo.Score = current.Opponent.Score;
            Deck deck = new Deck()
            {
                Cards         = new List <Card>(),
                ThrownCards   = new List <Card>(),
                IsClosed      = false,
                IsEndOfGame   = false,
                HasOpenedCard = true
            };

            deck.Cards.AddRange(current.CanBePlayedFromOpponent);
            deck.ThrownCards.AddRange(current.ThrownFromPlayersCards);
            deck.Cards.Add(current.ThrumpCard);

            if (playerOne.HasWonLastDeal || playerOne.HasWonLastHand)
            {
                current.OurTurn = true;
            }
            else
            {
                current.OurTurn = false;
            }

            if (current.CardOnTable != null)
            {
                if (current.OurTurn)
                {
                    MakeTurn(playerTwo, playerOne, deck, current.CardOnTable);
                }
                else
                {
                    MakeTurn(playerOne, playerTwo, deck, current.CardOnTable);
                }
            }
            return(MCTSEngine.PlayOneDeal(deck, playerOne, playerTwo, current.CardOnTable));
        }
Пример #2
0
 private static Card GiveMCTSBasedCard(Player player, Player f****t, Deck deck, Card playedFromOther = null)
 {
     // return MCTSEngine.Select(deck, player, playedFromOther);
     //TODO : IMPLEMENT THIS.
     return(MCTSEngine.MCTS(player, f****t, deck, playedFromOther));
 }
Пример #3
0
 private static Card GiveMCTSBasedCard(Player player, Deck deck, Card playedFromOther = null)
 {
     return(MCTSEngine.Select(deck, player, playedFromOther));
 }