可能很多人的心里都会有个武侠梦吧,偶然看到一个很有意思的小程序,模拟武侠小说中两派的遭遇战,小编尝试了一下做了些小改动,拿来和大家分享一下。
程序概述:
每个人都有名字、血量(HP) 、一系列技能及技能对应的攻击输出。所有人的攻击方式一致,即随机从自己的技能包中抽取一个技能进行攻击。两派人(自己命名)均继承自武林人士这个父类,但有各个门派都有各自的技能包及对应的输出值(面向对象继承概念)。门派下每个人拥有的技能包都是在实例化对象的时候随机赋予的。
开始遭遇战的时候,每个帮派的人数不确定,战斗采用回合制的方式进行,即帮派A中的一个人随机选择帮派B中的一个人进行攻击,B受到的伤害值为A随机选择的技能的输出值加
上20%的标准正态分布生成的随机数向下取整,即伤害值=输出值(1+0.2*N( 0,1)),技能被选择的概率和其对应的输出值成反比,如某人拥有两个技能,输出值分别为10、30,则技能1的被选择概率为 (1/10)/(1/10 + 1/30)。其中某一门派参与战斗的所有人都则阵亡(既HP降为0)则战斗结束。
1、几个随机数生成函数:首先引入random包, import random; random.random()生成一个0-1的均匀分布随机数; random.randint(a,b)生成取值范围为[a.b]的随机整数。
2、初始化需要用到的数据
3、编写武林人士类
4、编写打斗函数,得到遭遇战的战斗结果
5、编写主函数,实时显示两派人员血量
6、运行程序,调用主函数,并绘制战斗直方图
运行结果显示:
直方图结果显示:
完成,一起试试看吧~
注:本文基于64位windows系统(鼠标右键点击桌面“此电脑”图标——属性可查看电脑系统版本)、python3.x(pycharm自动安装的版本, 3.0以上)。
文中代码内容所使用的工具是pycharm-community-2020.1,实践中如有碰到问题,可留言提问。