def test_from_idx(): for color in Color: for number in range(CARD_OFFSET, CARD_OFFSET + CARDS_PER_COLOR): card = Card.create(number, color.name) idx_card = Card.form_idx(card.id) assert card == idx_card
def check_out_of_color(self, played_cards, seat_id): stich_color_id = Card.id_from_color(played_cards[0].color) for i, seat in enumerate(range(seat_id+1, seat_id+4)): # iterate over all seats seat_cor = (seat - self.player.seatId) % 4 if seat_cor != 0: # don't track out-of-color the player himself if played_cards[0].color is not played_cards[i].color and played_cards[i].color is not self.game_type.trumpf_color: self.out_of_color[seat_cor-1, stich_color_id] = 1
def _convert_action_to_card(self, action): card = Card.from_idx(int(action), self.game_type.trumpf_color) for hard_card in self.handCards: if card == hard_card: return card return None
def createBroadcastStich(data): score = [RoundScore(**score) for score in data.pop("teams")] return dict(type=MessageType.BROADCAST_STICH, data=dict(score=score, playedCards=[ Card.create(**card) for card in data.pop("playedCards") ], winner=Player(**data)))
def createRejectCard(card): return dict(type=MessageType.REJECT_CARD, data=Card.create(card["number"], card["color"]))
def createRequestCard(cards): return dict( type=MessageType.REQUEST_CARD, data=[Card.create(item["number"], item["color"]) for item in cards])
def createPlayedCards(playedCards): return dict(type=MessageType.PLAYED_CARDS, data=[ Card.create(item["number"], item["color"]) for item in playedCards ])
def createDealCards(cards): return dict( type=MessageType.DEAL_CARDS, data=[Card.create(item["number"], item["color"]) for item in cards])