少儿编程Scratch3.0教程——10 自制积木(项目练习)(文字版)
不知道你有没有玩过谷歌浏览器自带的小恐龙游戏,当你电脑没有网络连接时,使用谷歌浏览器去访问任意网站,这时候会出来一个小恐龙跳跃障碍的游戏。我们今天的课程就来模拟这个游戏,实现一个简易版,谷歌小恐龙。
先来看看游戏效果。

点击绿旗开始游戏,舞台上有一只小恐龙站在陆地上,然后对你说话“点击空格,开始游戏”。点击空格后,小恐龙开始在陆地上跑动,远处出现一颗仙人掌向小恐龙靠近,你需要按空格键跳起来躲避它。每跳过一个仙人掌,小恐龙跑动的速度就会加快,直到小恐龙碰到仙人掌,游戏结束。
接下来我们就一起来分析这个游戏需要怎么做。
首先,还是先需要你来回答下面的几个问题。
1、这个项目有几种背景?分别是什么?
2、每种背景有几个角色?分别是什么?
3、每种角色都做了什么?
和之前一样,你先暂停一下,自己试着回答它们,最好还可以用纸笔将它们写下来,之后再来看看和我做的是否一样。
1、这个项目有几种背景?分别是什么?
这个游戏有1个Scratch默认的白色背景。
2、每种背景有几个角色?分别是什么?
游戏中总共有4个角色,分别是小恐龙、陆地、仙人掌和GameOver的字母。
3、每种角色都做了什么?
当你在分析这个游戏时,首先你需要思考一个问题,小恐龙是如何跑步的?它是通过移动积木来跑的吗?
你在生活中有没有注意过这种现象,当你坐在运行中的车上时,你看见路边有一根电线杆。明明电线杆不会移动,但是因为你坐的车在动,所以在你的眼睛里,仿佛电线杆也正在移动。这个就是物理课中所学的相对运动。
类似的方式,你注意观察游戏中的小恐龙,实际上它在舞台中的x坐标并没有发生改变。而是陆地和仙人掌在向它靠近,从而看上去就像是小恐龙在往前跑。
你需要先明白这一点,才能分析清楚每个角色需要做什么。
舞台
1、点击绿旗,循环播放背景音乐。
2、初始化游戏状态。
3、等待游戏开始之后,开始计时。
小恐龙
1、点击绿旗,移到初始位置,进行游戏说明。
2、点击空格键跳跃。
3、点击空格,启动游戏。
4、开始跑步效果。
陆地
1、点击绿旗,移到初始位置显示出来。
2、等待游戏开始后,生成陆地。
3、不间断移动陆地。
仙人掌
1、点击绿旗,隐藏仙人掌。
2、等待游戏开始后,不间断移动仙人掌。
3、侦测与小恐龙是否发生碰撞,结束游戏。
GameOver的字母
1、点击绿旗,隐藏字母。
2、等待游戏结束后,显示字母。
接下来,我们就开始来完成这个游戏。
第一步,添加背景
因为是用的Scratch中的默认背景,所以不需要操作。
第二步,添加角色
小恐龙、陆地和仙人掌都不在Scratch默认的角色库中,需要上传。由于三种角色都有多个造型,所以每个角色上传需要分为两个步骤。
第一步,从上传角色的地方上传第一个造型。
上传之后,选择角色,切换到造型区,上传剩余造型。
同样的,你可以给在我的微信公众号中回复“谷歌小恐龙”,我就会把使用的素材免费发送给你。
剩下的GameOver字母,还是使用绘制工具画出来就可以了。
第三步,增加角色的动作
舞台
1、点击绿旗,循环播放背景音乐。
第一步还是一样,使用绿旗事件,然后循环播放背景音乐,这次用的音效是《Video Game 2》。想一想,这一步能不能使用自制积木,将播放背景音乐的积木块,打包进名称叫“播放背景音乐”的自制积木中,这样别人一眼就能知道这些代码是做什么用。
2、初始化游戏状态。
注意看舞台上方,游戏中使用了三个变量,分别是游戏时间,速度和游戏状态,所以在游戏开始时,需要将它们初始化,你依然可以将这个步骤放进自制积木中。
这三个变量有用处是什么呢?
游戏时间是用来记录小恐龙跑了多长时间,这样就可以和别人竞赛,谁坚持的时间更长。
速度是用来控制游戏难度,表示陆地和仙人掌移动的快慢,当游戏运行的时间越长,速度就会越快,游戏也就越难。
游戏状态是用表示当前游戏的进程,它会有三种状态,未开始,已开始和结束。通过改变游戏状态,你就可以让角色完成不同的事。
3、等待游戏开始之后,开始计时。
这一步首先你需要考虑的是,如何知道游戏开始了?这时候就可以使用刚刚游戏状态的变量进行判断,当游戏状态从“未开始”变为“已开始”时,就说明游戏开始了。
接着你就可以开始进行计时,同样可以将它们放进自制积木中。
小恐龙
1、点击绿旗,移到初始位置,进行游戏说明。
这一步很简单,你自己试着完成一下。
2、点击空格键跳跃。
如何让小恐龙跳跃?有没有想到改变它的y坐标,只需要让它上下滑动就可以模拟出简单的跳跃效果。如果你想要效果更逼真,还可以通过物理公式来进行计算。别忘了,跳跃的时候可以播放一个音效,增加游戏感。同样,你还是可以将这个步骤放入自制积木中。
3、点击空格,启动游戏。
如何启动游戏?有没有想到游戏状态,只需要在跳跃之后,判断一下当前的游戏状态,如果当前是“未开始”状态,将它切换为“已开始”状态就行了。
4、开始跑步效果。
这一步和舞台开始计时一样,当游戏状态切换为“已开始”之后,通过切换小恐龙的造型,模拟出跑步效果。
陆地
1、点击绿旗,移到初始位置显示出来。
2、等待游戏开始后,生成陆地。
和之前的方式一样,通过游戏状态判断游戏是否开始。
你可以看见,在等待“游戏状态=已开始”之前,还等待了1秒钟,为什么需要这样?等游戏全部做完以后,你可以自己试一试将等待1秒积木删掉,看看会发生什么效果。给你一个提示,当你点击舞台上面的绿旗以后,所有角色的积木都会同时开始执行。
接着要怎么样生成陆地?
观察陆地角色你会发现,陆地的长度无法铺满整个舞台,所以你需要去克隆它,将克隆的陆地拼接在一起铺满整个舞台。如何拼接在一起?是不是需要调整它们的显示位置。需要几个克隆体呢?你可以通过循环尝试几个不同的数量,直到它们能铺满舞台为止。为了让陆地看上去不是一模一样,你可以随机选择一个造型来显示。
3、不间断移动陆地。
如何移动陆地?是不是只要减少x坐标就可以了。移动的速度还会根据游戏发生变化,游戏时间越长,移动的速度就会越快。
你会发现当陆地全部运行到舞台外面以后,舞台上就没有陆地了。怎么样可能让它们不间断的移动呢?想想一下,假设现在舞台上有6个陆地克隆体拼接在一起。
当陆地开始从右向左移动之后,编号1的陆地就会移出舞台,编号2会移到编号1的位置,编号3移动编号2的位置,以此类推,最后一个编号6会移到编号5的位置。这时,原来编号6的位置就没有陆地,变成空白。那应该怎么办?你可以有两种方式处理。
方式一,既然编号1移出舞台看不见了,你是不是可以把它移到编号6的位置,重新开始移动就可以了。
方式二,既然每个陆地都是克隆体,当它移出舞台就没有用了,可以将它删除掉,然后重新克隆一个新的陆地,从编号6的位置开始移动就可以了。
仙人掌
1、点击绿旗,隐藏仙人掌。
2、等待游戏开始后,不间断移动仙人掌。
这一步是不是和陆地有点类似,你可以自制三个积木。
第一个叫启动仙人掌,等待游戏开始以后,就执行它。它可以让仙人掌显示出来,然后重复不断的从舞台最右边移动到最左边。
第二个叫重置仙人掌,它会将仙人掌放到舞台最右边,再随机选择一个造型。
第三个叫移动仙人掌,它会让开始向左移动,每当它移出舞台一次,就加快速度,这样运行的时间越长,速度会变的越快。
3、侦测与小恐龙是否发生碰撞,结束游戏。
还剩最后一步,仙人掌每移动一次就需要侦测一下是否碰到了小恐龙,如果碰到了,游戏就结束了。
游戏结束需要做什么?你可以隐藏仙人掌,把游戏状态设为“结束”,播放结束的音效,最后停止所有脚本。
注意的是,设置游戏状态的积木一定要放在播放声音的前面。你可以尝试一下,如果顺序颠倒了会发生什么情况。给你一个提示,和陆地角色等待“游戏状态=已开始”之前,需要添加等待1秒钟积木的理由类似。
GameOver的字母
1、点击绿旗,隐藏字母。
2、等待游戏结束后,显示字母。
和陆地等待开始游戏类似,字母需要等待“游戏状态=结束”,但是在这之前也需要一个等待1秒积木,最后将它显示出来。
这样,我们少儿编程Scratch3.0教程的最后一个游戏也完成了。你会发现,我在有的地方使用的了自制积木,有的地方没有使用。就像我在少儿编程Scratch3.0教程——10 自制积木(基础知识)中说的那样,什么时候需要使用自制积木并没有一个固定的标准,你只需要按照里面说的两个使用条件做出自己的判断就可以了。
除此之外,这个游戏在网上还有很多别人的实现方式,你也可以搜索出来进行学习。除了自己多动手以外,多看别人写的代码,学习别人的编程思路,也是提高编程水平的重要方式。
最后的最后,再唠叨最后一遍,自己多动手练习是学习编程的最快捷径。我之后会录制一个视频教程供你参考,如果你在学习过程中遇到问题无法解决,可以扫码关注我的微信公众号“梦世界”给我留言,我会对你的提问一一进行解答。
恭喜你全部通关。
Talk is cheap. Show me the code...
如果你看完以上内容,对少儿编程感兴趣,有想学习编程或者数学思维课的小朋友,欢迎给我留言。如果你有Web应用系统、手机APP、微信小程序等软件开发的需求,也欢迎给我留言与我联系。期待能与你共同进步。。。
0条留言