友情提示:380元/半年,儿童学编程,就上码丁实验室。
各位小伙伴大家好:
上期我们已经完成了亚瑟开枪的所有功能,那么还有什么好说吗?
还有,本来计划使用按键检测来让亚瑟连续开枪,但是发现pygame的按键检测需要初始化一个窗口才能使用,在这里有点不合时宜,我们把按键检测放到后面第四季再和大家分享。
这里我的解决办法是通过input函数获取用户输入的方式,来实现我们的设想。(办法有点low)
要想让亚瑟连续开枪,如果弹夹里只有一颗子弹这肯定不行。
所以,我们第一步就是创建更多子弹,如下图:
还记得吗?——是的,for循环。
执行10次,依次创建10颗子弹,每创建一颗就马上装入弹夹。
有了子弹,接下来就是获取用户的输入来控制亚瑟开枪。
我们将整个功能写入一个contor函数里面。代码解释我写在注释里面,大致意思是如果用户输入f,就调用英雄的开枪方法,让亚瑟开枪。
需要说明的是第62行,函数里面有两个参数,前面传入英雄,后面的是敌人。
为什么一定要将对象作为参数传递给函数呢?
这是因为如果没有这两个参数的话,下面第67行的shoot方法的调用就会出错——提示hero未定义。(可以将参数去掉看看错误类型)
接下来就是对主函数的调整:
第93行,是一个死循环,来让程序不停的执行。
每获取一次用户输入就判断一次敌人的血量和子弹的数量,然后根据结果做出相关的反应。
完成了这些,最后我们来看一下运行结果:
程序运行5次小兵被消灭,正常退出。
下面是修改后的完整代码,给大家做个参考:
你可以在此基础做二次、三次开发来让它更好玩,更强大。
本期就为大家分享到这里,这也是Python第三季的最后一期,我们第四季再见。
转自公众号:
高维数学