Example #1
0
        self.log()
        for player in self.players:
            self.log('player:', player.id, player.n_cards,
                sorted(player.must_have, key=lambda x: x.name),
                sorted(player.may_have, key=lambda x: x.name),
                '\n    ',
                player.selection_groups)
        self.log('current:', [type.solution for type in self.card_types])
        self.log('possible_solutions:', len(self.possible_solutions))
        for sol, count in self.possible_solutions.items():
            self.log('  ', sol, count)
        self.log('id|', end='')

        def end():
            return ' | ' if card.name in [g[-1] for g in CARDS] else '|'

        for card in self.cards:
            self.log(card.name, end=end())
        self.log()
        for player in self.players:
            self.log(' *'[player.id == self.player.id] + str(player.id), end='|')
            for card in self.cards:
                self.log(
                    ' ' + 'xo'[player in card.possible_owners or player is card.owner],
                    end=end())
            self.log()


if __name__ == '__main__':
    main(AI01, BufMessager)
Example #2
0
class SimpleAI(Player):
    def reset(self, player_count, player_id, cards):
        self.n_players = player_count
        self.id = player_id
        self.cards = cards
        self.suggest_choices = list(itertools.product(*CARDS))

    def suggest(self):
        cards = random.choice(self.suggest_choices)
        self.suggest_choices.remove(cards)
        return cards

    def suggestion(self, player_id, cards, disprove_player_id=None, card=None):
        pass

    def accuse(self):
        return None

    def disprove(self, suggest_player_id, cards):
        for card in self.cards:
            if card in cards:
                return card

    def accusation(self, player_id, cards, is_win):
        return None


if __name__ == '__main__':
    main(SimpleAI, BufMessager)
    # main(SimpleAI, LineMessager)
Example #3
0
        self.log()
        for player in self.players:
            self.log('player:', player.id, player.n_cards,
                     sorted(player.must_have, key=lambda x: x.name),
                     sorted(player.may_have, key=lambda x: x.name), '\n    ',
                     player.selection_groups)
        self.log('current:', [type.solution for type in self.card_types])
        self.log('possible_solutions:', len(self.possible_solutions))
        for sol, count in self.possible_solutions.items():
            self.log('  ', sol, count)
        self.log('id|', end='')

        def end():
            return ' | ' if card.name in [g[-1] for g in CARDS] else '|'

        for card in self.cards:
            self.log(card.name, end=end())
        self.log()
        for player in self.players:
            self.log(' *'[player.id == self.player.id] + str(player.id),
                     end='|')
            for card in self.cards:
                self.log(' ' + 'xo'[player in card.possible_owners
                                    or player is card.owner],
                         end=end())
            self.log()


if __name__ == '__main__':
    main(AI01, BufMessager)