def __init__(self, verbose): self.hand = [] self.name = random.randint(0, 1000000) self.verbose = verbose self.wins = 0 # For card counting self.opponentHand = [] self.maxCards = [max(durak.Card.RANKS) for _ in durak.Card.SUITS] self.unseenCards = set(durak.getDeck())
elif len(trumpCards) > 0: return options.index(trumpCards[0]) def beginAttack(self, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(self.hand, trumpCard.suit) def chooseAttackCard(self, options, table, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(options, trumpCard.suit) def chooseDefenseCard(self, options, table, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(options, trumpCard.suit) FULL_DECK = durak.getDeck(shuffle=False) def avgRank(cards): rankSum = sum(c.rank for c in cards) if len(cards) == 0: return 0 else: return float(rankSum) / len(cards) def extractFeatures(hand, opponentHand, opponentHandSize, trumpCard, table, deckSize, unseenCards): features = [len(hand), len(table), deckSize, opponentHandSize] for rank in durak.Card.RANKS: rankCards = filter(lambda c: c.rank == rank, hand)
if len(nonTrumpCards) > 0: return options.index(nonTrumpCards[0]) elif len(trumpCards) > 0: return options.index(trumpCards[0]) def beginAttack(self, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(self.hand, trumpCard.suit) def chooseAttackCard(self, options, table, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(options, trumpCard.suit) def chooseDefenseCard(self, options, table, trumpCard, deckSize, opponentHandSize, trashCards): return self.policy(options, trumpCard.suit) FULL_DECK = durak.getDeck(shuffle=False) def avgRank(cards): rankSum = sum(c.rank for c in cards) if len(cards) == 0: return 0 else: return float(rankSum) / len(cards) def extractFeatures(hand, opponentHand, opponentHandSize, trumpCard, table, deckSize, unseenCards): features = [len(hand), len(table), deckSize, opponentHandSize] for rank in durak.Card.RANKS: rankCards = filter(lambda c: c.rank == rank, hand)