文/陈新龙我们已经学习了不少掌控板的小实验,学到了OLED显示图片、文字和简单动画的方法;通过给掌控板写入程序,制作一些有趣的小游戏。今天我们结合图案显示和逻辑判断做一个猜拳小游戏。当玩家按下A键和B键,OLED屏幕的两边会随机出现石头剪刀布,程序会进行逻辑判断显示胜方。通过这个实例,你可以学习掌控板的按键功能,OLED显示图片功能,以及利用逻辑自动判断猜拳结果。这样可以综合利用我们学过的知识,制作一个完整的猜拳游戏。首先设置图像显示,猜拳的石头剪刀布图片在mPython软件中已内置,不需要我们外部导入,直接“获取内部图像”从图片素材库中选择石头(小)、剪刀(小)、布(小)。设置在屏幕不同的位置显示图片,注意OLED显示清空和OLED显示生效(如图1)。图1确定显示石头、剪刀、布的屏幕位置接下来我们需要设计一下游戏进行的步骤。两个玩家参与游戏,一个按下A键,屏幕显示一个随机图案,另外一个玩家按下B键,显示一个随机图案,程序来判断输赢。这中间需要解决几个问题,首先输出随机图案;其次系统如何知道出拳情况并开始进行判断;各种出拳情况如何进行正确的判断。下面看看解决这三个问题的思路吧。第一,是设置随机图案,引入一个随机数变量用它来设置随机图案的显示。当按下一个键的时候(A或者B),设计一个变量为1到3之间的随机数,根据随机数和规则来显示图片,A键设置变量为X,B键设置变量为Y,具体代码如图2。图2随机出拳(按B键时类似)第二,什么时候才让系统进行胜负判断呢?按照日常经验来看,只有A键和B键都按下,并且两方都正常显示图像后才可以进行猜拳判断。还记得为了设置随机图片时增加的变量X和Y吗?出拳后X和Y都是1到3的随机数(1是石头2是剪刀3是布),这样在程序开始时,我们可以设置X和Y变量都是0,只有当X和Y都不为0的时候才执行判断。(如图3)图3XY都不为0,表示都已经出过了接着就引出第三个问题了,如何能够进行正确的判断呢?不能单纯比较X和Y的数字大小,我们需要根据数字对应的猜拳结果,石头剪刀布之间的循环胜负来判断,一共有九种关系。(如下表)根据关胜负系表格需要多条判断,程序如图4:图4这样代码简单但效率太低在逻辑判断中我们使用了直接的方法,每种情况单独判断,没有使用判断的嵌套,这样代码比较长,但不容易出错适合初学者。我们做出来的游戏是给别人玩的,在实现基本功能后还需要从用户的角度去优化游戏体验。当游戏开始时,增加一个界面,简单说明游戏名称和操作方法。(如图5)图5添加游戏说明增加按下P键表示游戏开始,当触摸P键后,游戏初始化,X和Y的值为0,OLED的内容全部清空。自定义xianshi函数用于图像的显示,并且增加两个有参变量J和K,J代表变量X的值,K代表坐标X轴的位置,方便内置图像的显示。(如图6)图6对显示代码进行优化新增自定义函数,将参数J和K传入函数中,当j=1的时候在K的位置上显示石头图案,当j=2的时候在K的位置显示剪刀,当j=3的时候在K的位置布。这里增加有参变量主要是为了能够节约代码总量,只需要传入参数就可以把两边图案都显示出来,方便又轻松。(如图7)图7:一段代码可以重复使用程序运行效果图总的来说猜拳小游戏在程序设计上还是有点难度的,主要是将已经学过的知识点综合运用在游戏编写中。在完成基本功能后,尽可能的优化流程并减少代码量。这样可以锻炼自己的归纳整理能力,提高程序设计的能力。
转载请注明:http://www.abachildren.com/hbyx/8102.html