小冰战斗模拟 -py 版
感谢凤雏的战斗值探索:《小冰游戏战斗数值计算》,@baba22222
看到很多人需要,将其转换为了python版,通过自定次数的战斗模拟成功概率,修改对应变量直接运行就好
#!/usr/bin/env python
import random
def get_monster_atk():
global monster_lv,user_lv
level_diff = monster_lv - user_lv
if level_diff > 20:
return 9999999
elif level_diff > 15:
return int(monster_lv * 20 + 100 * random.random() * 28 + 4)
elif level_diff > 10:
return int(monster_lv * 12 + 50 * random.random() * 21 + 3)
elif level_diff > 7:
return int(monster_lv * 8 + 20 * random.random() * 14 + 2)
elif level_diff > 3:
return int(monster_lv * 7 + 10 * random.random() * 7 + 1)
else:
return int(monster_lv * 7)
def battle_with_monster():
global user_lv,user_arms,user_fire,user_armor,monster_lv
uatk = (user_lv * 10 + user_arms) * (user_fire + 1)
udef = user_lv * 10 + user_armor
uhp = 100 + user_lv * 100
matk = get_monster_atk()
mdef = monster_lv * 5
mhp = int(random.random() * monster_lv + monster_lv * 100)
round_num = 0
is_win = False
while uhp > 0 and mhp > 0:
round_num += 1
critical_hit = random.random() * 100 > 70
uhp -= max(0, matk - udef)
mhp -= max(0, (uatk * 2 if critical_hit else uatk) - mdef)
is_win = uhp > 0
return is_win
def simulate_battles(num_battles):
wins = 0
for _ in range(num_battles):
if battle_with_monster():
wins += 1
win_probability = wins / num_battles
print(f"{num_battles} 次战斗成功的概率是: {win_probability:.2%}")
return win_probability
user_lv = 65 # 人物等级
user_arms = 100 # 武器值
user_armor = 100 # 防具值
user_fire = 2 # 异火加成
monster_lv = 80 # 怪物等级
print("人物等级: ",user_lv,"\n武器值: ",user_arms)
print("防具值: ",user_armor,"\n异火加成: ",user_fire)
print("\n怪物等级: ",monster_lv)
# 运行5万次战斗模拟
simulate_battles(5_0000)
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬
派除我佬