中级篇——蝙蝠躲避球1

疑惑篇

点击绿旗按钮开始游戏,移动鼠标控制蝙蝠躲避小黄球。

视频演示open in new window

亲自操作open in new window

想一想:

  1. 如何修改为通过按键控制蝙蝠移动?
  2. 如何控制游戏的难度?

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

每个场景中的每个角色在做什么?

  1. 点击绿旗按钮,开始数字倒计时,倒计时结束,循环播放背景音乐,开始游戏。
  2. 许多小球从舞台四周出现,在舞台中随处移动。
  3. 移动鼠标,蝙蝠自动跟随鼠标移动,同时不停拍打翅膀。
  4. 蝙蝠碰到小球游戏结束,舞台出现“GAME OVER”文字,小球消失,蝙蝠停止移动,换为“失败”造型,说出游戏时间。

积木提示

当绿旗被点击

移动(10)步

移到x:(0) y:(0)

移到([随机位置])

面向(90)方向

碰到边缘就反弹

说(你好!)

换成([造型1])造型

将大小设为(100)

显示

隐藏

移到最[前面]

播放声音([喵])

播放声音([喵])等待播完

当接收到[消息1]

广播[消息1]

等待(1)秒

重复执行(10)次

重复执行

如果<>那么

停止[全部脚本]

当作为克隆体启动时

克隆[自己]

删除此克隆体

碰到([鼠标指针])?

鼠标的x坐标

鼠标的y坐标

计时器

计时器归零

在(1)和(10)之间取随机数

等于

注意事项

  1. 有几个小球角色?
  2. 如何让蝙蝠一边跟随鼠标移动,一边切换造型。

【解决篇】

当flash游戏刚出现时,如果你是一个喜欢玩游戏的人,相信有一个游戏你一定挑战过,那就是风靡网络的《是男人系列》。十几个简单的小游戏,操作简单,却让人上瘾,我自己当时也是成瘾者之一。于是在中级篇中,我将其中的两个小游戏作为学习案例,其中一个就是今天要完成的蝙蝠躲避球。

它玩法很简单,通过鼠标控制蝙蝠的移动,避免碰到四处乱飞的小球,看谁能坚持的时间更长。

接下来,我们就开始来完成这个小游戏。

第一步,先把用到的背景Stars添加进来。

第二步,添加需要的角色。

倒计时角色,与在Pong1中一样,可以绘制出来。除了数字3、2、1,还要增加一个游戏结束后显示的“GAME OVER”造型。

小球和蝙蝠直接从角色库中选出。

第三步,使用指令积木实现程序。

实际上,这个游戏中需要做的事情,大部分我们都已经在之前的案例中做过,现在只是将它们重新组合在一起而已。Scratch中的指令积木就像是乐高积木,积木种类有限,却可以凭借自己的想象力,创造出变化无穷的作品。所以对你来说,学习指令的使用只是基础入门,更重要的是如何将它们与自身的创意相结合,完成属于自己的作品。

1. 点击绿旗按钮,开始数字倒计时,倒计时结束,循环播放背景音乐,开始游戏。

点击绿旗按钮后,小球和蝙蝠需要先隐藏起来。

倒计时点击绿旗按钮后,出现在舞台上,3、2、1,每隔一秒变换一个造型。

倒计时结束准备开始游戏。同Pong1一样,倒计时角色通过广播[消息1]积木,通知其他角色游戏开始。接着你可以让倒计时角色循环播放背景音乐。也可以像之前案例一样,让舞台收到开始游戏的消息后,循环播放背景音乐。

2. 许多小球从舞台四周出现,在舞台中随处移动。

许多的小球出现在舞台中四处乱动,就像是从魔法棒中喷出的小星星。

同样,你可以先考虑只有一个小球的情况。先通过角色属性或者指令积木调整好小球的大小。

接着,小球接收到开始游戏的消息后,出现在舞台四周的任意位置。与Pong2中通过抛硬币选择随机的发球方向类似,在这里也可以通过抛硬币选择小球随机出现在舞台上下左右的哪一边?

例如,当随机数为1时,就选择上面或者下面,否则就选择左面或者右面。

接着,在每个分支中再扔一次硬币,决定具体的位置。

确定好小球的初始位置后,让它移动的方向也随机决定,之后让它显示在舞台上。

最后,只需要让小球像Pong1中的乒乓球一样,在舞台中不停的移动即可。

点击绿旗按钮进行测试,倒计时结束后,一个小球已经可以正常从舞台四周出现,在舞台中随处移动。

如何将它变为许多小球?只需要将它做的事情,改为许多克隆体执行即可。

此时,小球接收到开始游戏的消息时,只需要使用克隆[自己]积木,生成许多的克隆体,具体的数量由你自己决定。

当作为克隆体启动时,每个克隆体需要做什么事?是不是和刚刚小球做的事情一模一样。

重新点击绿旗按钮进行测试,此时倒计时结束后已经有许多小球从舞台四周出现,开始在舞台中随处移动。

3. 移动鼠标,蝙蝠自动跟随鼠标移动,同时不停拍打翅膀。

同样的,先通过角色属性或者指令积木调整好蝙蝠的大小。

蝙蝠在接收到开始游戏消息后,同魔法棒一样,也会跟随鼠标移动。

与此同时,它还会向飞翔的蝴蝶一样,不停的扇动翅膀。应该如何实现?

你或许会想到在重复执行积木中切换造型。

蝙蝠默认有4个造型,在这个案例中,我将它前两个造型作为扇动翅膀使用,第三个造型作为游戏结束时的“失败”造型使用,第四个造型可以保留不用,也可以直接删掉。

飞翔的蝴蝶一样,我只需要在重复执行积木中,不停的使用等待(1)秒积木和换成([造型1])造型积木切换它的前两个造型即可。

点击绿旗按钮进行测试,你会发现蝙蝠确实可以不停的扇动翅膀,并且跟随鼠标移动,只是移动的过程会有明显的卡顿。这是因为你使用了等待(1)秒积木,所以在蝙蝠每次移动之前,都必须等待一定的时间。

如何解决这个问题?

不知道你有没有思考过另外一个问题,为什么当我们给不同的角色使用当绿旗被点击积木后,我们只需要点击一个绿旗按钮,它们各自就会开始完成不同的任务,并且互不影响?

我在介绍当绿旗被点击积木时说过,事件积木就像是一个遥控开关,当满足某个条件时,事件积木就会被启动,从而开始执行它后面跟着的指令串。你可以将一个指令串想象成一个角色可做的一件事,当多个角色的事件积木被同时启动时,相当于它们同时开始在做多件事情。像这样同时做多件事情的功能,不仅可以在多个角色之间完成,也可以集中在一个角色身上。

回到案例中的蝙蝠身上,此时的蝙蝠需要同时完成两件事情,第一件事情是跟随鼠标移动。第二件事情是不停的切换造型,实现扇动翅膀的效果。

之前我们是将它们集中在一个指令串中执行,在一个指令串中蝙蝠无法在移动的同时又切换造型,它只能按照顺序一件一件的完成。

为了解决这个问题,我们可以将这两件事拆分成两个指令串,在通过相同的事件积木让它们同时启动,这样角色就可以同时完成多个操作。

这也是Scratch中另外一个重要的指令执行顺序,并行执行,它就像是可以让一个人一心多用。

具体到蝙蝠角色身上,可以使用两个当接收到[消息1]事件积木,同时接收开始游戏的消息。其中一个指令串接收消息后让蝙蝠跟随鼠标移动,另一个指令串接收消息后让蝙蝠不停的切换造型,实现扇动翅膀的效果。

重新点击绿旗按钮进行测试,现在蝙蝠已经可以正常的跟随鼠标移动,并且不停的扇动翅膀了。

学会了并行执行,你现在可以回过头去,尝试着解决我们在城堡中留下的一个问题。如何让小猫使用在(1)秒内滑行到x:(0) y:(0)积木进行移动时,还能一边移动一边切换造型?

4. 蝙蝠碰到小球游戏结束,舞台出现“GAME OVER”文字,小球消失,蝙蝠停止移动,换为“失败”造型,说出游戏时间。

最后一步,每当蝙蝠移动后,都需要去侦测它是否碰到了小球,如果碰到了,游戏结束。因为只有蝙蝠知道游戏是否结束,所以它需要发送消息通知大家,让大家收到游戏结束的消息后,完成各自的任务。

具体有哪些任务呢?

当蝙蝠自己接收到游戏结束的消息时,需要停止移动和扇动翅膀,可以使用停止[该角色的其他脚本]积木停止正在运行的其他指令串。

接着,将蝙蝠切换成第三个“失败”的造型,然后让它说出自己坚持的时间。具体的时间数字,就和消灭虫子1中一样,使用计时器积木计时。

为了保证计算的时间准确,在游戏开始时,需要利用计时器归零积木将时间重置。你可以将它放在倒计时结束之后,也可以放在其他角色接收到开始游戏消息时。

当小球接收到游戏结束的消息时,所有的小球都会消失。别忘了我们的小球是克隆体,还记不记得克隆体使用完成后需要做什么?

在这里你不能使用隐藏积木将它们隐藏起来,此时它们的任务已经完成,你需要使用删除此克隆体积木将它们全部删除。

点击绿旗按钮进行测试,你会发现因为所有的小球都是原始角色的克隆体,当原始角色收到消息时,所有的克隆体也都会同时收到消息,然后将自己删除。

与之类似,当你对原始角色使用当按下[空格]键或者当背景换成[背景1]事件时,原始角色和克隆体角色也都会同时启动相应的事件积木。

唯一一个有所不同的事件积木是当角色被点击积木。你可以自己测试一下,例如在该积木后面增加一个说(你好!)(2)秒积木,看看当你分别点击原始角色和不同的克隆体时,哪些角色会说话?

最后还剩下倒计时角色,当它收到游戏结束的消息时,它会先停止背景音乐,接着播放一个游戏结束的音效,换成“GAME OVER”的造型,显示在舞台上。

这样一来,一个简版的“是男人系列”游戏蝙蝠躲避球就完成了。你可以继续思考一下,如何像Pong1中一样,将它改为通过按键控制蝙蝠移动,以及如何修改游戏的难度。最后,别忘了将它分享出去和其他小伙伴比一比,看看谁能坚持的时间更长。

除此之外,还有一个需要注意的是。并行执行虽然可以让角色同时完成多个任务,但是它与克隆体类似,当同时启动的并行任务越多,程序也会变得越卡顿。这就像是一个电脑同时开了太多的应用会造成电脑卡顿一样。所以在使用并行任务时,时刻要提醒自己,是否可以将它们合并成一个任务,减少同时执行的任务数量。

想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window

想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店