Пример #1
0
def test_team_updates_traits_on_tik_end():
    s_warrior = pd.Series([90, 90, 90, "衝鋒,名將,氣勢,才貌雙全,不屈"],
                          index=["統率", "武勇", "智略", "類型戰鬥特性"])
    team = Team(s_warrior, 10000)
    team.traits.loc[team.traits["name"].isin(["名將", "才貌雙全", "不屈"]),
                    ["activated", "activated_until"]] = [True, 1]
    team.traits.loc[team.traits["name"].isin(["不屈"]),
                    ["activated", "activated_until"]] = [True, 9]

    expected = team.traits.copy()
    expected.loc[expected["name"].isin(["名將", "才貌雙全", "不屈"]),
                 ["activated", "activated_until"]] = [False, 10]
    expected.loc[expected["name"].isin(["不屈"]),
                 ["activated", "activated_until"]] = [True, 8]

    team.update_traits_on_tik_end()

    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_rows', None)
    print(team.traits)
    print(expected)
    print(team.traits.dtypes)
    print(expected.dtypes)

    assert pd.DataFrame.equals(team.traits, expected)
Пример #2
0
def test_get_team_by_name():
    league = League()
    team1 = Team('Santa Cruz Slugs')
    team2 = Team('Aptos FC')
    league.add_game(Game(team1, 10, team2, 0))
    assert league.get_team_by_name('Santa Cruz Slugs') is team1
    assert league.get_team_by_name('Aptos FC') is team2
    assert league.get_team_by_name('missing') is None
Пример #3
0
def test_generate_points():
    league = League()
    team1 = Team('Santa Cruz Slugs')
    team2 = Team('Aptos FC')
    league.add_game(Game(team1, 10, team2, 0))
    league.add_game(Game(team1, 0, team2, 0))
    league.add_game(Game(team1, 1, team2, 1))
    assert league.generate_points(3) == [(team1, 5), (team2, 2)]
Пример #4
0
def test_get_points_variety():
    team = Team('Santa Cruz Slugs')
    enemy = Team('Aptos FC')
    team.add_game(Game(team, 10, enemy, 0))
    team.add_game(Game(team, 5, enemy, 10))
    team.add_game(Game(team, 5, enemy, 5))
    team.add_game(Game(team, 10, enemy, 10))
    assert team.get_points(4) == 5
Пример #5
0
def test_add_game():
    league = League()
    team1 = Team('Santa Cruz Slugs')
    team2 = Team('Aptos FC')
    game = Game(team1, 10, team2, 0)
    league.add_game(game)
    assert game in league.games
    assert game in team1.games
    assert game in team2.games
Пример #6
0
def test_teams_getting_set():
    league = League()
    team1 = Team('Santa Cruz Slugs')
    team2 = Team('Aptos FC')
    team3 = Team('Monterey United')
    league.add_game(Game(team1, 10, team2, 0))
    league.add_game(Game(team1, 10, team3, 0))
    assert league.teams.count(team1) == 1
    assert league.teams.count(team2) == 1
    assert league.teams.count(team3) == 1
Пример #7
0
def test_team_updates_traits_on_tik_start():
    s_warrior = pd.Series([90, 90, 90, "衝鋒,名將,氣勢,才貌雙全,不屈"],
                          index=["統率", "武勇", "智略", "類型戰鬥特性"])
    team = Team(s_warrior, 10000)
    team.traits.loc[:, "activation_rate"] = 1.0

    expected = team.traits.copy()
    expected.loc[expected["name"].isin(["名將", "才貌雙全", "不屈"]),
                 "activated"] = True

    team.update_traits_on_tik_start()

    assert pd.DataFrame.equals(team.traits, expected)
Пример #8
0
def test_get_points_draws():
    team = Team('Santa Cruz Slugs')
    enemy = Team('Aptos FC')
    team.add_game(Game(team, 10, enemy, 10))
    team.add_game(Game(team, 0, enemy, 0))
    assert team.get_points(1) == 1
    assert team.get_points(2) == 2
Пример #9
0
def test_team_updates_traits_on_battle_end():
    s_warrior = pd.Series([90, 90, 90, "衝鋒,先驅,氣勢,副將,波狀攻擊,名將,風林火山"],
                          index=["統率", "武勇", "智略", "類型戰鬥特性"])
    team = Team(s_warrior, 10000)
    team.traits.loc[:, "activated"] = True

    expected = team.traits.copy()
    expected.loc[expected["name"].isin(["氣勢", "風林火山"]),
                 ["damage_increase", "loss_decrease"]] = [0, 0]
    expected.drop(index=expected.loc[expected["name"] == "先驅"].index,
                  inplace=True)

    team.update_traits_on_battle_end()

    assert pd.DataFrame.equals(team.traits, expected)
 def unpack_input(self, file_handler):
     for line in file_handler:
         re_matches = re.search(r'([a-zA-Z ]+) (\d), ([a-zA-Z ]+) (\d)',
                                line)
         if re_matches is None:
             raise Exception('Could not parse line: ' + line)
         team1 = self.league.get_team_by_name(re_matches.group(1))
         if team1 is None:
             team1 = Team(re_matches.group(1))
         team2 = self.league.get_team_by_name(re_matches.group(3))
         if team2 is None:
             team2 = Team(re_matches.group(3))
         score1 = re_matches.group(2)
         score2 = re_matches.group(4)
         self.league.add_game(Game(team1, score1, team2, score2))
Пример #11
0
    def get_event(self, sport):
        games = []

        with urllib.request.urlopen("{}".format(sport.value)) as url:
            data = json.loads(url.read().decode())

        events = data['events']

        for event in events:
            team1 = event['competitions'][0]['competitors'][0]
            team2 = event['competitions'][0]['competitors'][1]

            games.append(
                Game(Team(team1['team'], team1['score']),
                     Team(team2['team'], team2['score'])))

        return games
Пример #12
0
def test_team_collects_warriors_traits():
    s_warrior1 = pd.Series([90, 90, 90, "衝鋒,槍衾"],
                           index=["統率", "武勇", "智略", "類型戰鬥特性"])
    s_warrior2 = pd.Series([90, 90, 90, "槍衾,名將"],
                           index=["統率", "武勇", "智略", "類型戰鬥特性"])
    expected = conf.TRAITS_DEFAULT[conf.TRAITS_DEFAULT["name"].isin(
        ["衝鋒", "槍衾", "名將"])]

    team = Team([s_warrior1, s_warrior2], 10000)

    assert pd.DataFrame.equals(team.traits, expected)
Пример #13
0
def test_team_inits_with_1_warrior():

    team = Team(s_zhentianxingcun, 10000)

    assert len(team.warriors) == 1
    assert team.troops == 10000

    assert team.tong == 92
    assert team.wu == 99
    assert team.zhi == 82

    assert team.tong_lead == 92
    assert team.wu_lead == 99
    assert team.zhi_lead == 82
    assert team.traits.empty is False
Пример #14
0
def test_team_inits_with_multiple_warriors():

    team = Team([s_zhentianxingcun, s_zhentianchangxing], 10000)

    assert len(team.warriors) == 2
    assert team.troops == 10000

    assert team.tong == 92
    assert team.wu == 99
    np.testing.assert_almost_equal(team.zhi, 90.16)

    assert team.tong_lead == 92
    assert team.wu_lead == 99
    assert team.zhi_lead == 82

    assert team.traits.empty is False
Пример #15
0
def test_team_updates_traits_on_battle_start():
    s_warrior = pd.Series([90, 90, 90, "衝鋒,先驅,氣勢,副將,波狀攻擊,名將"],
                          index=["統率", "武勇", "智略", "類型戰鬥特性"])
    team = Team(s_warrior, 10000)
    opponent = Team(s_opponent1, 10000)
    team.set_opponent(opponent)
    team.traits.loc[:, "activation_rate"] = 1.0

    expected = team.traits.copy()
    expected.loc[expected["name"].isin(["衝鋒", "先驅"]), "activated"] = True

    team.update_traits_on_battle_start()
    print(team.traits)
    print(expected)
    print(team.traits.dtypes)
    print(expected.dtypes)

    assert pd.DataFrame.equals(team.traits, expected)
Пример #16
0
name2 = sys.argv[2]

# Read in team1 stats
dataReader = DataReader()
rushingData = dataReader.statReader("Rushing.csv")
passingData = dataReader.statReader("Passing.csv")
kickingData = dataReader.statReader("Kicking.csv")
returningData = dataReader.statReader("Returning.csv")
puntingData = dataReader.statReader("Punting.csv")
downData = dataReader.statReader("Down.csv")

# Read in play percentages
playData = dataReader.playReader("Percent.csv")

# Build Team
team1 = Team(name1)
team1.buildTeam(rushingData, passingData, kickingData, returningData,
                puntingData, downData, playData)

team2 = Team(name2)
team2.buildTeam(rushingData, passingData, kickingData, returningData,
                puntingData, downData, playData)

team1Count = 0
team2Count = 0
tieCount = 0

fileWrite = open("output.txt", 'w')
for i in range(1000):
    game = Game(team1, team2)
    game.startGame()
Пример #17
0
def test_battle():
    log = init_log()

    team = Team([s_wutianxinxuan], 10000)
    opponent = Team([s_shangshanqianxin], 10000)

    team.set_opponent(opponent)
    opponent.set_opponent(team)

    tik = 1
    while team.troops > 0 and opponent.troops > 0:
        team.update_traits_on_tik_start()
        opponent.update_traits_on_tik_start()
        if tik % 3 == 0:
            team.update_traits_on_battle_start()
            opponent.update_traits_on_battle_start()

            team.update_team_factors()
            opponent.update_team_factors()

            kills = team.calculate_kills()
            killed = opponent.calculate_kills()

            team.take_damage(killed)
            opponent.take_damage(kills)

            log = battle_log(log, tik, team, opponent, kills, killed)

            team.update_traits_on_battle_end()
            opponent.update_traits_on_battle_end()

        team.update_traits_on_tik_end()
        opponent.update_traits_on_tik_end()

        tik = tik + 1

    log.to_excel("battle_log.xlsx", index=False)

    assert True
Пример #18
0
from src.Game import Game
from src.Team import Team

team1 = Team('First')
team2 = Team('Second')


def test_get_winner_team1():
    game = Game(team1, 10, team2, 4)
    assert game.get_winner() is team1


def test_get_winner_team2():
    game = Game(team1, 2, team2, 4)
    assert game.get_winner() is team2


def test_get_winner_draw():
    game = Game(team1, 3, team2, 3)
    assert game.get_winner() is None
Пример #19
0
def run_evaluation():
    log = init_log()
    total = df_candidates.shape[0]

    for idx, candidate in df_candidates.iterrows():
        idx = idx + 1
        msg = f"{idx}/{total}"
        for battle in range(1, 101):
            team = Team([candidate], 5000)
            opponent = Team([s_opponent], 5000)
            team.set_opponent(opponent)
            opponent.set_opponent(team)

            tik = 1
            while team.troops > 0 and opponent.troops > 0:
                team.update_traits_on_tik_start()
                opponent.update_traits_on_tik_start()
                if tik % 3 == 0:
                    team.update_traits_on_battle_start()
                    opponent.update_traits_on_battle_start()
                    team.update_team_factors()
                    opponent.update_team_factors()

                    kills = team.calculate_kills()
                    killed = opponent.calculate_kills()
                    team.take_damage(killed)
                    opponent.take_damage(kills)

                    log = battle_log(log, battle, tik, team, opponent, kills,
                                     killed, msg)

                    team.update_traits_on_battle_end()
                    opponent.update_traits_on_battle_end()

                team.update_traits_on_tik_end()
                opponent.update_traits_on_tik_end()

                tik = tik + 1

            log.to_excel("battle_log.xlsx", index=False)
Пример #20
0
def test_default_name():
    team = Team()
    assert team.name #falsy if None or ''
Пример #21
0
field = int(sys.argv[4])

# Read in team stats
dataReader = DataReader()
rushingData = dataReader.statReader("Rushing.csv")
passingData = dataReader.statReader("Passing.csv")
kickingData = dataReader.statReader("Kicking.csv")
returningData = dataReader.statReader("Returning.csv")
puntingData = dataReader.statReader("Punting.csv")
downData = dataReader.statReader("Down.csv")

# Read in play percentages
playData = dataReader.playReader("Percent.csv")

# Build Team
team = Team(name)
team.buildTeam(rushingData, passingData, kickingData, returningData,
               puntingData, downData, playData)

# Choose a play
playSet = {}
play = ""
percent = 0.0
for i in range(1000):
    playTemp, percentTemp = team.playProb(down, distance, field)
    if playTemp not in playSet.keys():
        playSet[playTemp] = percentTemp
    if percent < percentTemp:
        play = playTemp
        percent = percentTemp
Пример #22
0
def test_add_game():
    team = Team('Santa Cruz Slugs')
    enemy = Team('Aptos FC')
    game = Game(team, 5, enemy, 3)
    team.add_game(game)
    assert game in team.games
Пример #23
0
def test_sort_points_by_name():
    team1 = Team('Santa Cruz Slugs')
    team2 = Team('Aptos FC')
    points = [(team1, 0), (team2, 0)]
    League.sort_points(points)
    assert points == [(team2, 0), (team1, 0)]