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")
def test_true_game_complete_check(self): players = [("white", 3), ("plum", 2)] test_game = Game(players) test_cards = ["dagger", "candlestick","rope","wrench","revolver","plum","white","scarlett","green","mustard","hall","billiard","study","dining","kitchen","ballroom","conservatory","library"] test_game.set_cards_incorrect(test_cards) self.assertTrue(test_game.is_complete())
def test_false_game_complete_check_1(self): players = [("white", 3), ("plum", 2)] test_game = Game(players) self.assertFalse(test_game.is_complete())