【自玩】王者荣耀模拟器V1
项目背景
单排上王者太难,经常连输4局以上才能赢一局,目前仍和赛季初一样星耀三。感觉匹配机制不好,应改为玩的好的匹配玩的好的,玩的差的匹配玩的差的,其实50%是公平但不是最合理的设置值,玩家可能更希望通过游戏来达到放松的目的而不是生气更多,游戏甚至不应该产生生气的情绪,更别提发火了。
模拟器实验
# 初始数据
# .shtml网站展示只有条形图,没有具体数值
# 通过F12获取元素的bar width百分比 换算为具体的数值
life_bar = 6000 # bar满血量
attack_bar = 500 # bar满攻击
attack_speed = 1 # 1秒一次普攻
money = 300 # 初始金币
# 列表的值分别对应life和attack值
hero = {'YaSe': [0.8, 0.3],'HuangZhong': [0.4, 0.9],'HanXin': [0.2, 0.7],'LiBai': [0.4, 0.7],
}
equipment = {'JiSuZhanXue': {'move_speed': 60,'attack_speed': 0.25, # 加攻速比例0.25'price': 710,'sell': 426,},'PoJun': {'attack': 180,'BeiDong': 'life<50%增加30%的attack','price': 2950,'sell': 1770,}
}
# 游戏匹配
pass
print("匹配成功")
# 游戏选英雄
hero_select = input('请选择您的英雄'+str(list(hero.keys()))+'\n')
life_select = life_bar*hero[hero_select][0]
attack_select = attack_bar*hero[hero_select][1]
print("您选择的英雄是%s"%hero_select)
print("英雄血量%.2f 攻击力%.2f"%(life_select,attack_select))
hero_enermy = np.random.choice(list(hero.keys()),1)[0]
life_enermy = life_bar*hero[hero_enermy][0]
attack_enermy = attack_bar*hero[hero_enermy][1]
print("您对战的英雄是%s"%hero_enermy)
print("英雄血量%.2f 攻击力%.2f"%(life_enermy,attack_enermy))
# 游戏对战
step = 0
while(not (life_select<=0 or life_enermy<=0)):print('TimeStep %d'%step)step+=1life_select-=attack_enermylife_enermy-=attack_selectprint(" %s血量:%.2f"%(hero_select,max(life_select,0)))print(" %s血量:%.2f"%(hero_enermy,max(life_enermy,0)))if life_select<=0 and life_enermy<=0:print("# %s与%s同归于尽"%(hero_select,hero_enermy))else:print("# Victory! %s打败了%s"%(hero_select,hero_enermy)) if life_enermy<=0 else \print("# Defeated! %s打败了%s"%(hero_enermy,hero_select)) if life_select<=0 else "Do nothing"
模拟结果
D:\Softwares\Anaconda\envs\tf21\python.exe
匹配成功
请选择您的英雄['YaSe', 'HuangZhong', 'HanXin', 'LiBai']
LiBai
您选择的英雄是LiBai
英雄血量2400.00 攻击力350.00
您对战的英雄是YaSe
英雄血量4800.00 攻击力150.00
TimeStep 0LiBai血量:2250.00YaSe血量:4450.00
TimeStep 1LiBai血量:2100.00YaSe血量:4100.00
TimeStep 2LiBai血量:1950.00YaSe血量:3750.00
TimeStep 3LiBai血量:1800.00YaSe血量:3400.00
TimeStep 4LiBai血量:1650.00YaSe血量:3050.00
TimeStep 5LiBai血量:1500.00YaSe血量:2700.00
TimeStep 6LiBai血量:1350.00YaSe血量:2350.00
TimeStep 7LiBai血量:1200.00YaSe血量:2000.00
TimeStep 8LiBai血量:1050.00YaSe血量:1650.00
TimeStep 9LiBai血量:900.00YaSe血量:1300.00
TimeStep 10LiBai血量:750.00YaSe血量:950.00
TimeStep 11LiBai血量:600.00YaSe血量:600.00
TimeStep 12LiBai血量:450.00YaSe血量:250.00
TimeStep 13LiBai血量:300.00YaSe血量:0.00
# Victory! LiBai打败了YaSeProcess finished with exit code 0
项目结果
根据官网的数据,不使用技能的情况下李白竟能击败亚瑟。
项目改进
1.匹配机制加入
2.技能机制加入
3.对局装备购买
4.多人对战机制
【自玩】王者荣耀模拟器V1
项目背景
单排上王者太难,经常连输4局以上才能赢一局,目前仍和赛季初一样星耀三。感觉匹配机制不好,应改为玩的好的匹配玩的好的,玩的差的匹配玩的差的,其实50%是公平但不是最合理的设置值,玩家可能更希望通过游戏来达到放松的目的而不是生气更多,游戏甚至不应该产生生气的情绪,更别提发火了。
模拟器实验
# 初始数据
# .shtml网站展示只有条形图,没有具体数值
# 通过F12获取元素的bar width百分比 换算为具体的数值
life_bar = 6000 # bar满血量
attack_bar = 500 # bar满攻击
attack_speed = 1 # 1秒一次普攻
money = 300 # 初始金币
# 列表的值分别对应life和attack值
hero = {'YaSe': [0.8, 0.3],'HuangZhong': [0.4, 0.9],'HanXin': [0.2, 0.7],'LiBai': [0.4, 0.7],
}
equipment = {'JiSuZhanXue': {'move_speed': 60,'attack_speed': 0.25, # 加攻速比例0.25'price': 710,'sell': 426,},'PoJun': {'attack': 180,'BeiDong': 'life<50%增加30%的attack','price': 2950,'sell': 1770,}
}
# 游戏匹配
pass
print("匹配成功")
# 游戏选英雄
hero_select = input('请选择您的英雄'+str(list(hero.keys()))+'\n')
life_select = life_bar*hero[hero_select][0]
attack_select = attack_bar*hero[hero_select][1]
print("您选择的英雄是%s"%hero_select)
print("英雄血量%.2f 攻击力%.2f"%(life_select,attack_select))
hero_enermy = np.random.choice(list(hero.keys()),1)[0]
life_enermy = life_bar*hero[hero_enermy][0]
attack_enermy = attack_bar*hero[hero_enermy][1]
print("您对战的英雄是%s"%hero_enermy)
print("英雄血量%.2f 攻击力%.2f"%(life_enermy,attack_enermy))
# 游戏对战
step = 0
while(not (life_select<=0 or life_enermy<=0)):print('TimeStep %d'%step)step+=1life_select-=attack_enermylife_enermy-=attack_selectprint(" %s血量:%.2f"%(hero_select,max(life_select,0)))print(" %s血量:%.2f"%(hero_enermy,max(life_enermy,0)))if life_select<=0 and life_enermy<=0:print("# %s与%s同归于尽"%(hero_select,hero_enermy))else:print("# Victory! %s打败了%s"%(hero_select,hero_enermy)) if life_enermy<=0 else \print("# Defeated! %s打败了%s"%(hero_enermy,hero_select)) if life_select<=0 else "Do nothing"
模拟结果
D:\Softwares\Anaconda\envs\tf21\python.exe
匹配成功
请选择您的英雄['YaSe', 'HuangZhong', 'HanXin', 'LiBai']
LiBai
您选择的英雄是LiBai
英雄血量2400.00 攻击力350.00
您对战的英雄是YaSe
英雄血量4800.00 攻击力150.00
TimeStep 0LiBai血量:2250.00YaSe血量:4450.00
TimeStep 1LiBai血量:2100.00YaSe血量:4100.00
TimeStep 2LiBai血量:1950.00YaSe血量:3750.00
TimeStep 3LiBai血量:1800.00YaSe血量:3400.00
TimeStep 4LiBai血量:1650.00YaSe血量:3050.00
TimeStep 5LiBai血量:1500.00YaSe血量:2700.00
TimeStep 6LiBai血量:1350.00YaSe血量:2350.00
TimeStep 7LiBai血量:1200.00YaSe血量:2000.00
TimeStep 8LiBai血量:1050.00YaSe血量:1650.00
TimeStep 9LiBai血量:900.00YaSe血量:1300.00
TimeStep 10LiBai血量:750.00YaSe血量:950.00
TimeStep 11LiBai血量:600.00YaSe血量:600.00
TimeStep 12LiBai血量:450.00YaSe血量:250.00
TimeStep 13LiBai血量:300.00YaSe血量:0.00
# Victory! LiBai打败了YaSeProcess finished with exit code 0
项目结果
根据官网的数据,不使用技能的情况下李白竟能击败亚瑟。
项目改进
1.匹配机制加入
2.技能机制加入
3.对局装备购买
4.多人对战机制