def main(): print 'Welcome to Deduce or Die! IA' print nb_players = ask_for('Number of players : ', int, ['3', '4', '5', '6']) human_player_name = ask_for('Type your name : ') state = GameState() players, state.human_player = prepare_players(nb_players, human_player_name) state.players = players motive_deck = prepare_game_deck(nb_decks=1) state.interrogation_deck = prepare_game_deck(nb_decks=2) state.discard_deck = [] state.evidence_cards = [motive_deck.pop(), motive_deck.pop()] deal_deck(motive_deck, players) assert len(motive_deck) <= 1 if len(motive_deck) == 1: state.extra_card = motive_deck[0] else: state.extra_card = None for player in state.players: if not player.is_human(): player.setup_ai(state) print_summary(state) determine_low_suit(state) print print_low_suit(players) state.turn = 1 while state.status != 'ended': play_turn(state) end_game_summary(state) print
def test_determine_murderer_when_its_another_player(self): state = GameState() john = HumanPlayer('john') jim = AIPlayer('jim') jack = AIPlayer('jack') state.current_player = john state.players = [john, jim, jack] state.extra_card = (8, 'L') john._hand = [(5, 'L'), (9, 'H'), (6, '$')] jim._hand = [(4, 'L'), (7, 'L'), (3, '$')] jack._hand = [(1, 'L'), (3, 'H'), (5, '$')] accusation_cards = [(5, 'L'), (7, '$')] # => murder card = 3H self.assertEqual(jack, determine_murderer(state, accusation_cards))
def test_print_summary_with_extra_card_and_low_suit(self): human = HumanPlayer('john') human._hand = [(3, 'L'), (5, 'H'), (9, '$')] human.set_low_suit('H') state = GameState() state.human_player = human state.players = [human] state.extra_card = (5, 'L') with captured_output() as (out, err): self.assertFalse(print_summary(state)) self.assertEqual( 'Game Summary\n' 'Your hand: 3L 5H 9$\n' 'Extra card: 5L\n' 'Low Suits: [john: H]\n' 'Secret to play: [john: 1]', output(out))