Esempio n. 1
0
def worker(matchups):
    global lock, total_games_played, total_games_skipped, player_classes, games_won, games_played
    for i, game_players in enumerate(matchups):
        # print(f"Games between {game_players[0]} and {game_players[1]}")
        games_count = 0
        last_winner = None
        consecutive_wins = 0
        while games_count < games_per_matchup:
            # game setup
            f = Fight(random.randint(15, 35))
            p1, p2 = get_players(game_players)
            f.add_players([p1, p2])

            # play game
            winner = f.fight()
            with lock:
                total_games_played.value += 1

            # evaluate winner
            if winner is not None:
                games_won[winner[0]] += 1

                # count consecutive wins
                if last_winner == winner[0]:
                    consecutive_wins += 1
                else:
                    consecutive_wins = 0
                last_winner = winner[0]
            
            # count games played up
            games_played[p1.name] += 1
            games_played[p2.name] += 1

            games_count += 1
            # check if next games can be skipped because of consecutive wins
            if consecutive_wins == consec_wins_before_skip:
                with lock:
                    total_games_skipped.value += games_per_matchup - games_count
                break
    print(f'worker finished with following matchups: {matchups}' + ' '*30)