Example #1
0
def main():
    '''
    main execution loop
    '''
    
    number_of_players = get_number_of_players()
    player_colours = get_players(number_of_players)
    game = Game(player_colours)
    controlled_player = get_controlled_player(number_of_players)
    game.set_controlled_player(controlled_player)
    controlled_player_cards_held = game.get_number_of_cards_held(controlled_player-1)
    controlled_player_cards = get_controlled_player_cards(controlled_player_cards_held)
    game.set_player_cards_held(controlled_player, controlled_player_cards)
    
    guesser_player_index = 1
    
    #main play loop
    while (game.is_complete() is not True):
        
        play_string = get_next_play(guesser_player_index)
       
        
        if check_play_input(play_string):
            
            #response loop
            while True:
                responder_player_index = get_responding_player()
                
                if check_response_input(responder_player_index):
                    
                    if responder_player_index== controlled_player:
                        card_seen = get_cards_played(1)
                    else:
                        card_seen = None
                        
                    #play the turn
                    play = play_string.split(' ')
                    game.turn(guesser_player_index, play[0], play[1], play[2], responder_player_index, card_seen)
                    
                else:
                    print("Response was in an inconsistant format")
                    continue
                
                break
                
        else:
            print("Play was in an inconsistant format")
            continue
        
        # needs testing
        if guesser_player_index >= number_of_players:
            guesser_player_index = 1
        else:
            guesser_player_index += 1
            
    else:
        game.end()
    def test_basic_path_correct_4(self):

        # create the game with the know player cards
        players = [("white", 4), ("plum", 4), ("scarlett", 5), ("green", 5)]
        test_game = Game(players)
        test_game.set_controlled_player(0)
        test_game.set_player_cards_held(0, ["rope","wrench","kitchen","white"])      
        
        self.update_unseen_cards(test_game.incorrect_cards)
        #keep playing guess until the game is not complete
        while not test_game.is_complete():

            possible_cards = []
            
            #get three unknown cards from the unknown cards
            if self.unseen_actors:
                actor = str(random.sample(self.unseen_actors, 1)[0])
                possible_cards.append(actor)
            else:
                actor = "green"

            if self.unseen_rooms:
                room = str(random.sample(self.unseen_rooms, 1)[0])
                possible_cards.append(room)
            else:
                room = "kitchen"

            if self.unseen_weapons:
                weapon = str(random.sample(self.unseen_weapons, 1)[0])
                possible_cards.append(weapon)
            else:
                weapon = "rope"         

            responder_index = self.decide_responder_index(test_game)
            card_seen = random.sample(possible_cards, 1)
            
            print("current turn: " + actor + ", " + room + ", " + weapon + ' responder index: ' + str(responder_index) + " cards seen: " + str(card_seen))
            #create a guess from above cards
            test_game.turn(0, actor, weapon, room, responder_index, card_seen)
            print(test_game.incorrect_cards)
            self.update_unseen_cards(test_game.incorrect_cards)
        
        #complete the game 
        self.assertTrue(test_game.is_complete(), "game complete")
Example #3
0
 def test_incorrect_player_card_addition_input_2(self):
     players = [("white", 6), ("plum", 6), ("scarlett", 6)]
     test_game = Game(players)
     with self.assertRaises(ValueError):
         test_game.set_player_cards_held(0, ["rope","wrench","candlestick","white","green","revolver"])
         test_game.set_player_cards_held(0, ["library"])
Example #4
0
 def test_correct_player_card_addition_input_2(self):
     players = [("white", 6), ("plum", 6), ("scarlett", 6)]
     test_game = Game(players)
     test_game.set_player_cards_held(2, ["rope","wrench"])
     self.assertTrue(test_game.get_number_of_cards_known(2) == 2)    
Example #5
0
 def test_correct_player_card_setting_2(self):
     players = [("white", 6), ("plum", 2), ("scarlett", 6)]
     test_game = Game(players)
     test_game.set_player_cards_held(1, ["rope","wrench"])
     self.assertTrue(test_game.get_number_of_cards_held(1) == 2)    
Example #6
0
 def test_correct_player_card_setting_1(self):
     players = [("white", 6), ("plum", 6), ("scarlett", 6)]
     test_game = Game(players)
     test_game.set_player_cards_held(0, ["rope","wrench","revolver","plum","white","scarlett"])
     self.assertTrue(test_game.get_number_of_cards_held(0) == 6)