少儿编程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条留言

留言