上一节:
<> 上一节我们学了类的基本使用,为了巩固学习,今天继续使用 类 来编程。 # 好好学习,天天打卡 #
今天我们要研究的是“奥特曼打小怪兽”
游戏策划 不要觉得没有用
# 题目 #
写出一个“奥特曼”和“小怪兽”类,基本属性有名字、生命值和魔法值。来实现“奥特曼”打“小怪兽”。
基本玩法是,奥特曼先攻击,小怪兽只能反击;奥特曼可以使用普通攻击、魔法攻击和必杀技三种攻击方式,小怪兽只能使用普通攻击。奥特曼使用魔法攻击,扣40魔法值,每次普通攻击后恢复魔法值。
基本玩法满足后,测试一下“奥特曼”的胜率
思路分析 要怎么打呢
# 分析 #
先设计出两个类,然后再用死循环进行互相攻击,直到其中一个血条为0,宣布游戏结果。
“奥特曼”类,需要普通攻击、魔法攻击、必杀技、魔法恢复、显示这些类方法。出什么方法可以用随机函数,生成1-10,随机按概率使用攻击技能。“小怪兽”类稍微简单,只要普通攻击、显示两个类方法。
想好基本的思路,和往常一样,列出思路来。
# 思路 #
奥特曼类
普通攻击:
伤害值范围在15-25点之间。
每次攻击恢复魔法值范围1-10点。
魔法攻击:
伤害值范围在20-30点之间。
使用一次魔法攻击扣40点魔法值。
必杀技:
伤害值:取小怪兽当前生命值的3/4,
每次攻击自身扣50点。
恢复:
每次普通攻击后恢复1-10点魔法值
小怪兽类
普通攻击:
伤害值范围在10-20点之间。
游戏主程序
用简单的while语句控制死循环,If语句控制基本流程。
开始编码 一步一步来
# 写好注释 #
根据之前所分析的,写好注释。写注释的目的,一方面是为了让自己思路清晰,知道下一步要干嘛,另外就是保持初心,因为代码写着写着,你就忘记了开头是怎样策划的。
所以为了保持初心,写注释很重要
写好注释后,我们开始根据注释编写类
# 奥特曼类 #
1、定义一个奥特曼类,它包含基本的名字、生命值和魔法值:
游戏中一般都是用HP表示生命值,MP表示魔法值
2、根据注释写出attack()普通攻击。
attack函数,需要传入攻击的对象为参数,所以这里括号里面的ms就代表小怪兽。攻击一次,就将ms的hp扣去一个随机数。这里使用了randint函数,就是随机函数,所以需要在代码的最开头加入一行代码,
这里的print()函数使用了%s代表字符串,%d代表数字,他们的值在后面%()里面对应起来,这是print的新用法。
攻击完,调用resume函数,恢复魔法值,这个函数后面再写。
3、根据注释写出magic()魔法攻击,
需要判断魔法值够不够使用,一次扣40所以要判断魔法值有没有大于40,没大于40就转成普通攻击。
4、根据注释写出super()必杀技
需要判断生命值够不够使用,一次扣50所以要判断生命值有没有大于50,没大于40就转成普通攻击。大于50的话,自己先扣50(杀敌自损),然后扣去怪兽当前生命值的四分之三。
5、根据注释写出resume()恢复魔法
需要判断魔法值有没有超过90,避免魔法值恢复后大于100。
6、根据注释写出display()显示基本信息
这里模拟一个血量条,清晰直观看出数据,不多说。
# 奥特曼类 #
1、定义一个奥特曼类,它包含基本的名字、生命值和魔法值:
2、根据注释写出attack()普通攻击。
3、根据注释写出display()显示基本信息
# 主程序 #
1、实例化 奥特曼和怪兽
奥特曼对象括号里面三个值,分别指名字、生命值和魔法值,怪兽括号里面是名字和生命值。因为奥特曼技能过多,伤害略高,太过酷炫,所以为了小怪兽被打的太可怜,这里多给小怪兽一些血量,毕竟只能挨打反击。
2、游戏开始,向对手致敬
定义一个变量times用来保存回合数,然后开始挨打。进入循环的条件是,奥特曼的血量或者小怪兽的血量大于0,说明他们两个没有一个死翘翘,就一直打下去。
3、奥特曼开始秀技能
这里用1-10的随机数来控制技能概率,普通攻击概率60%,魔法攻击概率30%,必杀技概率10%。可怜的小怪兽要被打了。
4、轮到怪兽反击
只要它的血量大于0,说明它还活着,活着就得勇敢地去战斗!接招吧,奥特曼!
小怪兽反击完后,显示它们两个各自的基本信息,然后游戏回合数加1。
5、判断输赢
# 开打开打! #
可怜的小怪兽一开始就被奥特曼用必杀技扣了112点血量,三回合倒下。
战况激烈,
小怪兽说:“只要你不用必杀技,我就是大爷!”
奥特曼说:“虐菜、不用必杀技我也能打赢你!”
为了验证它们到底谁厉害。
我改了下代码
让他们大战300回合。
代码修改以上几处。就可以开始自动测试300次,统计出输赢次数。
测试结果如下:
看来还是小怪兽厉害一点,
毕竟皮厚一点。
python完整代码
↓ ↓ ↓ 加入我们,一起学习吧 ↓ ↓ ↓
我就知道你“在看”