APP下载

从头开始学App Inventor(五)——打地鼠

2022-10-08高澜心

电脑报 2022年38期
关键词:画布列表精灵

高澜心

打地鼠是一款大众喜爱的经典游戏,这次我们自己制作一个。在手机上用手指头快速打击出洞的地鼠,即可获得分数。通过制作这个游戏,我们会涉及多屏幕切换、多组件模块组合使用、画布与精灵的坐标、计时器的应用等知识点。通过综合运用各种技巧让我们的游戏可玩性更高。

游戏开始后进入选择场景页面,可以选择3个场景(图1)。

场景1:地鼠随机出现在屏幕任何位置,每500毫秒移动一次,如果玩家手指触摸地鼠,显示命中数增加1,并伴有音效;如果手指触摸到屏幕但没有击中地鼠,则失败数增加1(图2)。

场景2:地鼠随机出现在地洞中,当击中10次地鼠时,游戏结束并显示“你赢了”(图3)。

场景3:在倒计时60秒时间内,每次击中地鼠时命中数增加1,当时间为0时,显示“游戏结束,请重新开始”(图4)。

登录到http://app.gzjkw.net/等开发网站,新建项目,命名为“dadishu”。收集项目需要的素材:图片4张(地鼠mole.png、被打中地鼠mole2.png、洞hole.png、2场景背景background.png、3场景背景background2.png)和击中音效(zong.mp3)(图5)。

初始屏幕提示了游戏名,为3个不同场景做引导。初始屏幕的组件属性设置如表1,组件排布如图6。

表1

游戏由多个屏幕组成,点击初始屏幕的三个按钮可以切换到其他屏幕。这里我们使用了简单的直接打开另一屏幕。App Inventor中,屏幕不能访问另一个屏幕的组件或者變量,如果要实现屏幕之间的值传递,可以用“打开屏幕并传值”和“关闭屏幕并返回值”模块,不过这个模块只能传输一个值,如果需要传入多个值,可以通过列表的形式来传递。接收返回值时,可以使用“获取初始值”模块(图7)。

用“新增屏幕”新建一个屏幕,命名为“Screen_first”。注意屏幕组件一旦命名确定后就不能修改了。场景1的组件属性设置如表2。

表2

想要控制地鼠的移动,我们先要了解Android的图形定位机制,坐标(0,0)在画布的左上角,图像精灵的左上角是坐标(x,y)。

因此当地鼠位于画布左上角时,其x和y值都是0。当地鼠位于画布的右下角时,坐标是(画布的宽度-图像精灵的宽度,画布的高度-图像精灵的高度)。所以地鼠的移动范围如图8。

在游戏开始前,为了让所有组件不能意外移动,用一个全局变量来检测游戏状态,建立全局变量“游戏已经开始标志”。游戏没开始时设为“假”,当点击开始设为“真”,其他组件先检查这个变量是否为“真”再进行后续的动作。

点击“开始”按钮,游戏回复到初始状态。计时器、计数都归零,画布可以触碰,地鼠开始移动。

为了让地鼠固定时间移动一次,计时也需调用“地鼠移动”,如果调试时觉得地鼠移动得太快或太慢,可以改变“计时器_地鼠”的时间间隔如图9。

通过画布的被触碰事件来处理地鼠被击中后的过程。XY坐标表示手指触摸点,用“碰到任意精灵”来检测是否碰到地鼠。

先检查“游戏已经开始标志”变量是否为“真”,为真表示游戏进行中。

如果“任意被触碰的精灵”为真,表示碰到了地鼠,则命中数加1,并播放音效。否则,失败数加1(图10)。

场景2中,我们让地鼠出现在洞中,用5个图像精灵表示地洞,这5个图像精灵的属性全部默认,我们后面用程序控制它们的外观,其余组件与场景1类似(图11)。

利用列表对5个地洞设置图片为“hole2.png”。首先创建空列表“地洞”,将5个图像精灵直接作为列表项;使用左侧模块中“任意组件-任意图像精灵”中的“设置图像精灵 图片”模块,循环为将每一项的图片设为“hole2.png”。

因为我们需要对多个图像精灵进行设置不是特指,所以才需要使用“任意组件”中的模块来泛指所有需要设置的多个组件(图12)。

列表中“图像精灵_洞1”模块比较特殊,它没有具体属性而是代表这个图像精灵本身,你可以在所有属性的最后找到它。

地鼠必须出现在某个洞口,程序要用同样的XY坐标数字控制地鼠和地洞,我们可以在保持地鼠和地洞图片的大小相同前提下,调整图像中两者的位置达到需要的效果(图13)。

由于画布中有多个图像精灵,场景1中的判断方式就不适用了。需要用“图像精灵_地鼠被触碰”来判断(图14)。

点击开始按钮,游戏恢复初始状态。计时器定时移动地鼠一次。如果点击返回,则回到“Screen 1”屏幕(图15)。

在场景3中,洞口就是背景图的一部分,我们需要预先将地鼠放在每一个洞口,并记下坐标值。用列表存储这些坐标值,用随机数取列表的项目序号的方式来取出坐标。为了定位准确,需要定位画布的宽和高(图16)。

游戏已经比较完善了,现在为游戏添加一个倒计时显示。每隔1秒,倒计时文本减1,直至为0,游戏结束,并显示“游戏结束,请重新开始”。由于需要在画布指定位置显示文字,在点击开始时还要清除画布(图17)。

受篇幅所限,我们只介绍了打地鼠游戏程序中的重点部分,剩下的一些还需要你用已经掌握的知识自己完善。

猜你喜欢

画布列表精灵
冬精灵
学习运用列表法
海底精灵国
在画布上做梦的画家 夏加尔
欢舞的精灵们
扩列吧
为什么要在画布上割一刀?
让鲜花在画布上盛开
列表画树状图各有所长
大师的画布