Example #1
0
    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
Example #2
0
    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
Example #3
0
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