def test_accuse_bad_guess_of_cards(self): try: old_raw_input = raw_input Interactive.raw_input = mock_raw_input('1', '1L', '2L') # opponent id, first card, second card joe = HumanPlayer('joe') joe._hand = [(4, 'L'), (8, 'L'), (5, 'H'), (8, 'H')] ai = AIPlayer('ai') ai._hand = [(1, 'L'), (3, 'L'), (1, 'H'), (9, '$')] state = GameState() state.turn = 23 state.current_player = joe state.players = [joe, ai] state.evidence_cards = [(5, '$'), (5, 'L')] with captured_output() as (out, err): self.assertTrue(accuse_command(state)) self.assertEqual('Accuse\n\n' 'Your guess is: Incorrect', output(out)) accusation = state.accusations.pop() self.assertEqual('joe', accusation['player'].name) self.assertEqual('ai', accusation['accused'].name) self.assertEqual([(1, 'L'), (2, 'L')], accusation['cards']) self.assertEqual('incorrect', accusation['outcome']) self.assertEqual('ended', state.status) finally: Interactive.raw_input = old_raw_input
def test_accuse_bad_guess_of_murderer(self): try: old_raw_input = raw_input Interactive.raw_input = mock_raw_input('1', '3L', '5L') # opponent id, first card, second card joe = HumanPlayer('joe') joe._hand = [(4, 'L'), (7, 'L'), (5, 'H'), (8, 'H')] ai1 = AIPlayer('ai1') ai1._hand = [(1, 'L'), (3, 'L'), (1, 'H'), (9, '$')] ai2 = AIPlayer('ai2') ai2._hand = [(8, 'L'), (3, 'H'), (2, '$'), (3, '$')] state = GameState() state.turn = 23 state.current_player = joe state.players = [joe, ai1, ai2] state.evidence_cards = [(3, 'L'), (5, 'L')] with captured_output() as (out, err): self.assertTrue(accuse_command(state)) self.assertEqual('Accuse\n\n' 'Your guess is: Incorrect', output(out)) self.assertEqual('ended', state.status) finally: Interactive.raw_input = old_raw_input
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