欢迎光临
我们一直在努力

Scratch第十六讲:新积木的应用实例

上一讲专门讲了如果创建新的积木,今天通过一个小例子来让大家熟悉新建积木的用法。

这个例子取材于DK出版的《编程真好玩》一书。该书主要是通过一些小游戏来教学。书中的例子内容比较多,CC哥只抽出重点部分跟大家讲解。

先看这个小游戏的展示:

非常简单,就是小红块跳跃障碍物的游戏,如果跳到绿色按钮就算赢了。

让我们看看新建积木在这个程序里是如何使用的。

首先在背景里画一组障碍物。CC哥把最后一个障碍物画得比较高,所以需要借助台阶才能跳过去。如何画图CC哥就不介绍了,大家可以自学一下。(这里面有一个小技巧,如果是画直线,按住shift键可以轻松画直线)

画好了障碍物,那就再做一个小红块的角色吧,这个CC哥也不用讲了。

程序构成:

1:小红块的左右移动

用左右键来控制小红块的左右移动,程序要求:碰到蓝色障碍物要停止。

2:小红块的跳跃

用空格键可以让小红块跳跃,程序要求:小红块落到蓝色障碍物平台上要静止。还有不能在空中连续跳跃。小红块下落的时候要模拟重力加速。

好,让我们来看看具体的编程:

第一步:左右移动部分

这一段程序大家很熟悉了,通过循环来检测是否左右键被按下,如果按下了就做相应移动。如果碰到了障碍物(此处因为障碍物没有用单独的角色来做,而是画在背景上的,所以可以用碰到颜色这个布尔变量来判断。这个颜色设定很简单,先选中命令里面的小色块,再用鼠标点一下障碍物就设置好了。)碰到障碍物要回退一步,确保与障碍物脱离开,这样之后的操作才不会有bug,这是个碰到障碍物的标准程序作法。

现在我们试着将这段程序封装到一个新的积木里,然后只要调用这个新积木,就可以实现小方块的左右移动控制。

看,很简单,把循环去掉,直接创建一个新的积木,并把这段代码放到这个新积木下面就完成了。这是一个没有变量的积木,调用很简单。当然我们还可以把奔跑速度作为新积木的一个变量,这样在调用积木的时候就要记得同时设定奔跑速度的值。

做好了奔跑,我们开始做跳跃:

我们直接做一个新积木,叫跳跃控制,跳跃控制很简单,其实就是检测是否按下了空格,如果按下了就设定一个下落速度的值。然后配合重力的程序模块来完成跳跃和降落的过程。(重力的程序部分我们会后面单独封装一个新积木)

这段程序增加了个小技巧来解决小红块的空中跳跃问题,我们在空格键按下后,先让小红块向下移动一步,然后判定是否碰到蓝色平台,如果碰到了,就设定起跳的速度,也就是下落速度(下落速度其实是指小红块一次在Y方向上移动的距离,如果是正值就是向上移动,如果负值就是向下移动)。加上这段代码后,如果小红块跳到空中,再按空格键就没有用了。

最后的部分是重力积木模块:

这是传统的做法,我们看看这种做法的下降效果。

有点小问题,我们发现小红块再快落到平台上的时候速度减慢了,慢慢的降落在平台上,有点不舒服。什么原因呢?原来是红块触碰蓝色平台时,按照碰撞程序的标准设计,需要回退,那回退后会继续落下,如此一个反复的过程,直到下降速度逐步减小到零。那如何解决这个问题呢?我们可以尝试检测一旦小红块碰到蓝色平台,不是回退上一次的下降距离,而是每次回退距离1,直到小红块离开蓝色平台。这样就不会出现最后的变慢过程了。

让我们看看重写的代码:

请注意,在这个积木设置的选项中,要把运行时不要刷新屏幕给打上勾。这样在执行这条积木命令的时候就不会不断的刷新屏幕,而是等积木命令执行完的时候才会刷屏幕,显得执行会比较快。所以请注意当你新建积木里有循环语句时,一定要把这个选项打上勾。大家可以尝试一下不选中这个选项时的执行效果。

主要的内容基本都讲了,整个程序如下:

我们把每一个标准模块都给打包成了新积木,然后在主程序里调用就好了,每一段的代码都不长,非常容易读,也容易调整和修改。这个在大型程序设计里面非常关键。

CC哥的跟我学编程,跟其他的学习编程的课程不一样,CC哥会重点教大家编程思维逻辑。让小朋友们从小就能培养好的逻辑思维习惯,和培养优秀的思维品质。而不是教小朋友去做码农。如果你认同CC哥的理念的话,就请关注CC哥的公众号,并推荐给你的朋友们。

历史文章

赞(90)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址