Scratch少儿编程第75讲-海洋世界-进阶版

转自公众号:跟我学scratch编程 2019-12-31 10:52

进阶教程不光是把程序做得复杂,更多时候是把程序的细节处理好,今天CC哥就把海洋世界之前做过的一个最初级的程序,配上一些细节的完善,让大家再看看这个游戏跟初级课程做的游戏会有什么区别。

先看看游戏视频:

视频没看清楚的地方,下面一步步介绍。

气泡的优化思路

1:首先CC哥第一眼就觉得之前的游戏里最大的问题就是气泡不会动。

https://cdn.china-scratch.com/timg/200102/1052442S3-0.jpg

因为这只是个背景图片,气泡当然不会动了,那金黄朝想把它变成会动的气泡,那不就生动了?

如何变成会动的气泡呢?CC哥开始思考相应的物理知识:

1:气泡在浮起的时候,随着压强的降低,是不断变大的。

2:因为变大,受到的浮力也不断增大,所以气泡是不断加速上浮的,而且加速度越来越快的。

3:因为受到各种外部环境影响,气泡是不可能直线上浮的,是在上浮过程中左右晃动的。

有了这些物理知识,那么CC哥要做的气泡程序就必须符合这个条件才行。

看到这里大家明白没有?刚才你看到的游戏视频里的气泡可不是什么动图和造型切换,而是CC哥用编程做出来的。

https://cdn.china-scratch.com/timg/200102/105245C40-1.jpg

通过这个动图大家观察出来气泡怎么产生的了吗?


气泡的程序设计

首先这个CC哥是用克隆体来做的:

1:第一步要设计好气泡的样子和冒出的位置

https://cdn.china-scratch.com/timg/200102/10525012c-2.jpg

https://cdn.china-scratch.com/timg/200102/1052501V8-3.jpg

气泡就是一个绿色的小点。CC哥构想有海底冒出三个气泡的位置,直接copy了三个气泡的角色,这样可以简化编程。这三个角色的代码都是一模一样的。

2:不断克隆自己

https://cdn.china-scratch.com/timg/200102/105250L42-4.jpg

克隆的时间间隔,CC哥用了讲过的随机数技巧,平常的随机数只能取整数,但是CC哥想要的随机的时间间隔很短,大概在0.02秒和0.06秒之间,所以金黄朝只要把取得随机数除以50,就可以得到小数的随机数。

3:气泡上升过程中的变化:

https://cdn.china-scratch.com/timg/200102/1052512455-5.jpg

这段代码主要注重两部分:

a: 上升加速

上升加速有两种方法,一种是用加法,一种是用乘法。区别就是固定加速度还是变加速度。比如金黄朝平常模拟重力效果时就用加法,金黄朝会把上升速度每次循环时固定增加1或-1,这就是固定加速度。而乘法是金黄朝每次把加速度的值每次循环乘以一个系数,那么这种变化就会产生累积,会越来越大。比如:1.1 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1 = 1.95。这就是炒股里说的复利,每年只赚10%,七年下来就赚翻翻了。https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.png 

另外考虑多一个细节,就是每次气泡冒出来的大小是不固定的,有的出来小些,有的大些。

https://cdn.china-scratch.com/timg/200102/1052513U7-7.jpg

为什么这么考虑?是想让气泡在上升的过程中有交错的效果,比如大的气泡升的快,就会超过小的气泡,视觉效果就更真实。所以初始的上升速度是跟气泡的大小有关系的。

b: 水平晃动

https://cdn.china-scratch.com/timg/200102/1052515311-8.jpg

https://cdn.china-scratch.com/timg/200102/1052522R6-9.jpg

https://cdn.china-scratch.com/timg/200102/1052521M1-10.jpg

跟晃动部分相关的代码:

1:晃动只要处理X轴的运动效果就可以。

2:用正弦函数就可以得到一个-1~1之间的变换值。再配上Y轴的运动,就会产生螺旋上升的效果。

3:设置晃动变量增加的数值,是为了控制气泡群的宽度,晃动增加的越快,气泡群的直径就越窄。

4:在每次循环的运动过程中用了随机数来变换振幅,这样就可以造成上升过程中的随机运动效果,而不是一个标准的螺旋上升曲线。

有没有觉得CC哥思考得还是很周全的?程序不复杂,但是效果很好。https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.png这一直是CC哥追求的,越简单越完美。https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.pnghttps://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.pnghttps://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.png

顺便优化一下鲨鱼

这一讲主要是讲气泡的,但是CC哥在做完了气泡之后,就停不下来,还想把鲨鱼优化一下。

https://cdn.china-scratch.com/timg/200102/1052521448-15.jpg

这是老的被鲨鱼吃掉效果,是不是简陋的想哭呀。https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_5.png

https://cdn.china-scratch.com/timg/200102/105253CO-17.jpg

CC哥看到造型里还有一个张嘴的造型,这不正好是吃鱼的动作嘛,赶紧利用以前的学习技巧,把这个改善一下。

https://cdn.china-scratch.com/timg/200102/1052532517-18.jpg

这里面也有细节要处理:

1:鲨鱼有两种,一种是固定巡航的鲨鱼,沿着固定路径在走,那么如果碰到小鱼的时候是背面碰到的,那么鲨鱼要转身吃掉小鱼。

2:在吞吃小鱼的时候,是嘴部吞的,嘴部并不是鲨鱼的中心位置,所以程序处理要退20步。

3:要配音https://res.wx.qq.com/mpres/htmledition/images/icon/common/emotion_panel/smiley/smiley_13.png

https://cdn.china-scratch.com/timg/200102/10525L333-20.jpg

过程控制

以前处理程序流畅,结束的时候就是一个停止全部脚本。

https://cdn.china-scratch.com/timg/200102/10525W306-21.jpg

其实配合好消息命令,还有这些停止命令,就可以很有效的控制游戏的进程。CC哥就用这些命令进行游戏的进程控制,给小鱼附加上生命值,变成了一个完整的游戏。

这次的进阶课程,并不是要强调多高深的编程技巧,而是强调编程设计中如何对细节进行思考,一些小的技巧用在细节的处理上面,就会为程序增色不少。所以学习过程中,最重要的是活学活用,而不是天天追求难点。


·END·

跟我学Scratch编程

不用花钱成为Scratch高手

本文转自公众号:跟我学scratch编程

后记,小编朋友金黄朝研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”

https://www.china-scratch.com/Uploads/Editor/2018-04-22/5adca08bdc212.jpg

声明:本文章由爬虫自动处理和转载作为教育分享用途,原作者可通过邮件及时和金黄朝联系处理:freemanzk@qq.com