Last active
November 29, 2018 05:04
-
-
Save LokiSharp/f6e5d65817410eb5fc500dbfc3a37b46 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from src.division_builder.division_builder import LandDivisionBuilder | |
from src.land_warfare.land_warfare_calc import calc_damage | |
from src.division_builder.technologies import technologies, equipments | |
from src.utils import round_util, round_sum, round_min, round_max | |
builder = LandDivisionBuilder("data/") | |
division_template_dict1 = { | |
'name': 'Test-Division_01 11步6炮', | |
'division_names_group': 'Test_Arm_01', | |
'regiments': ['infantry'] * 11 + ['artillery_brigade'] * 6, | |
'supports': ['engineer', 'recon', 'artillery', 'anti_air', 'anti_tank'], | |
'equipments': equipments, | |
'technologies': technologies, | |
} | |
division_template_dict2 = { | |
'name': 'Test-Division_02 8机步6坦4自火', | |
'division_names_group': 'Test_Arm_02', | |
'regiments': ['mechanized'] * 8 + ['super_heavy_armor'] * 6 + ['super_heavy_sp_artillery_brigade'] * 4, | |
'supports': ['engineer', 'recon', 'artillery', 'anti_air', 'anti_tank'], | |
'equipments': equipments, | |
'technologies': technologies, | |
} | |
division_template_dict3 = { | |
'name': 'Test-Division_03 25步', | |
'division_names_group': 'Test_Arm_03', | |
'regiments': ['infantry'] * 25, | |
'supports': ['engineer', 'recon', 'artillery', 'anti_air', 'anti_tank'], | |
'equipments': equipments, | |
'technologies': technologies, | |
} | |
division_template_dict4 = { | |
'name': 'Test-Division_02 8机步6坦4自火', | |
'division_names_group': 'Test_Arm_02', | |
'regiments': ['mechanized'] * 8 + ['modern_armor'] * 6 + ['modern_sp_artillery_brigade'] * 4, | |
'supports': ['engineer', 'recon', 'artillery', 'anti_air', 'anti_tank'], | |
'equipments': equipments, | |
'technologies': technologies, | |
} | |
division_template_dict5 = { | |
'name': 'Test-Division_05 11步5炮1重自反', | |
'division_names_group': 'Test_Arm_05', | |
'regiments': ['infantry'] * 11 + ['artillery_brigade'] * 5 + ['heavy_tank_destroyer_brigade'] * 1, | |
'supports': ['engineer', 'recon', 'artillery', 'anti_air', 'anti_tank'], | |
'equipments': equipments, | |
'technologies': technologies, | |
} | |
division1 = builder.calculate_stats(division_template_dict1) | |
division2 = builder.calculate_stats(division_template_dict2) | |
# division3 = builder.calculate_stats(division_template_dict3) | |
# division4 = builder.calculate_stats(division_template_dict4) | |
# division5 = builder.calculate_stats(division_template_dict5) | |
print(division1) | |
print(division2) | |
# print(division3) | |
# pprint(division4) | |
# print(division5) | |
round_degree = 2 | |
def print_result(result_1, result_2): | |
print( | |
f"攻击伤害: " | |
f"合计:{round_sum(result_1):.2f} " | |
f"均值:{round_util(sum(result_1) / len(result_1)):.2f} " | |
f"最大值:{round_max(result_1):.2f} " | |
f"最小值:{round_min(result_1):.2f}" | |
) | |
print( | |
f"反击伤害: " | |
f"合计:{round_sum(result_2):.2f} " | |
f"均值:{round_util(sum(result_2) / len(result_2)):.2f} " | |
f"最大值:{round_max(result_2):.2f} " | |
f"最小值:{round_min(result_2):.2f}" | |
) | |
def cal_range(division_1, division_2): | |
division_a = division_1.copy() | |
division_b = division_2.copy() | |
print(f"进攻方属性:" | |
f"宽度:{division_a['Combat Width']:.2f} " | |
f"装备度:{division_a['HP']:.2f} " | |
f"组织度:{division_a['Organisation']:.2f} " | |
f"软攻:{division_a['Soft attack']:.2f} " | |
f"硬攻:{division_a['Hard attack']:.2f} " | |
f"防御:{division_a['Defense']:.2f} " | |
f"突破:{division_a['Breakthrough']:.2f} " | |
f"装甲厚度:{division_a['Armor']:.2f} " | |
f"穿甲深度:{division_a['Piercing']:.2f} " | |
f"硬度:{division_a['Hardness']:.2f} ") | |
print(f"防守方属性:" | |
f"宽度:{division_b['Combat Width']:.2f} " | |
f"装备度:{division_b['HP']:.2f} " | |
f"组织度:{division_b['Organisation']:.2f} " | |
f"软攻:{division_b['Soft attack']:.2f} " | |
f"硬攻:{division_b['Hard attack']:.2f} " | |
f"防御:{division_b['Defense']:.2f} " | |
f"突破:{division_b['Breakthrough']:.2f} " | |
f"装甲厚度:{division_b['Armor']:.2f} " | |
f"穿甲深度:{division_b['Piercing']:.2f} " | |
f"硬度:{division_b['Hardness']:.2f} ") | |
org_damage_l = [] | |
org_back_damage_l = [] | |
str_damage_l = [] | |
str_back_damage_l = [] | |
battle_round = 0 | |
while division_a['Organisation'] > 0 and division_b['Organisation'] > 0: | |
battle_round += 1 | |
print(f'第{battle_round}回合:') | |
if division_a['Organisation'] > 0: | |
org_damage, str_damage = calc_damage(division_a, division_b, 'Defense') | |
division_b['Organisation'] = division_b['Organisation'] - org_damage | |
division_b['HP'] = division_b['HP'] - str_damage | |
org_damage_l.append(round_util(org_damage)) | |
str_damage_l.append(round_util(str_damage)) | |
print(f"防御方伤害:组织度:{org_damage:.2f}({(org_damage/division_2['Organisation']*100):.2f}%) 装备度:{str_damage:.2f}({(str_damage/division_2['HP']*100):.2f}%)") | |
if division_b['Organisation'] > 0: | |
org_back_damage, str_back_damage = calc_damage(division_b, division_a, 'Breakthrough') | |
division_a['Organisation'] = division_a['Organisation'] - org_back_damage | |
division_a['HP'] = division_a['HP'] - str_back_damage | |
org_back_damage_l.append(round_util(org_back_damage)) | |
str_back_damage_l.append(round_util(str_back_damage)) | |
print(f"进攻方伤害:组织度:{org_back_damage:.2f}({(org_back_damage/division_1['Organisation']*100):.2f}%) 装备度:{str_back_damage:.2f}({(str_back_damage/division_1['HP']*100):.2f}%)") | |
print('组织度:') | |
print_result(org_damage_l, org_back_damage_l) | |
print('装备度:') | |
print_result(str_damage_l, str_back_damage_l) | |
print(f"攻击回合数 {len(org_damage_l):.2f} 反击回合数 {len(org_back_damage_l):.2f}") | |
print(f"进攻方组织度 {division_a['Organisation']:.2f} 防守方组织度 {division_b['Organisation']:.2f}") | |
print(f"进攻方装备度 {division_a['HP']:.2f} 防守方组织度 {division_b['HP']:.2f}") | |
if division_a['Organisation'] > division_b['Organisation']: | |
print('进攻方胜利') | |
else: | |
print('防守方胜利') | |
if __name__ == '__main__': | |
division_list_a = [division2] | |
division_list_b = [division1, division2] | |
for a in division_list_a: | |
for b in division_list_b: | |
print("=" * 40, f"{a['Name']} vs {b['Name']}", "=" * 40) | |
cal_range(a, b) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment