/* * 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)); }
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)); }
private static Card GiveMCTSBasedCard(Player player, Deck deck, Card playedFromOther = null) { return(MCTSEngine.Select(deck, player, playedFromOther)); }