友情提示:380元/半年,儿童学编程,就上码丁实验室。
这个暑假,慢教育召集喜爱Scratch编程的孩子一起自学Scratch编程,我们组了一个群,让一群素不相识的孩子,可以围绕一个任务,切磋代码;可以交流遇到的难题,在讨论中获得主动学习的快乐;可以分享成果,交流用代码表达思维的乐趣。慢教育公众号会每周发布一次编程任务。也会不定期推送孩子们的编程作品。上周因为休假,暂停了Scratch案例分享,今天我们来编一个好玩的游戏:小猫跨栏。
任务设置
按下空格键,小猫开始跑步,每按一次空格键,跑一步;按下上箭头,小猫竖直起跳,然后一个栏架一个栏架跨过去,最后计算跑100步的时间。
要求:
1、小猫跑步过程,采用相对运动原理,小猫不动,栏架朝小猫运动;
2、小猫跳跃动作,需要符合物体自由落体规则;
3、如果小猫碰到栏架,栏架倒地,时间增加1秒。
背景和角色设计
背景绘制一个黑色的长方形作为跑道。
用默认的小猫作为游戏主角色
有两个造型可以切换
模拟跑步的小猫
绘制一个简单的长方形
作为栏架
有两个不同的造型
脚本分解
程序开始前,需要设置4个变量。
按 新建变量 按钮,出现这个对话框,在变量名文本框里填入对应的变量名称,点击确定,即可创建一个变量。这里我们选择全局变量选项,也就是适用于所有角色的变量。
下面分别讲解4个变量的作用。
变量“距离”,记录小猫跑过的距离,程序运行过程中,距离会不断变化,程序的变量相当于一个容器,用来存放这个不断变化的数据,勾选变量前面的小方框,可在舞台上显示变量的数值。
变量“时间”,记录小猫跑了100步用的时间,也是游戏最终的成绩。
变量“Vy”,用来存放小猫跳跃速度,这个速度会随着高度变小,直到最高点0,然后反方向变大。
变量“t”,用来存放小猫起跳起来的时长,这个时长用于计算小猫竖直起跳的运动轨迹。
下面对小猫角色编写脚本。
同样的,点击绿旗,程序开始。
开始时,需要初始化变量值,将距离和时间清零。
设置小猫的位置。
测定跑100步所用的时间
用一个条件循环来计时:
当距离=100时,也就是小猫跑了100步,停止执行。
循环内,我们用“将时间变量增加0.1”,然后“等待0.1秒”,两个模块,完成计时功能;
下面还有一个条件语句,用来处理小猫跑步过程中碰到栏架的情况。
用“如果碰到……那么……”条件,
碰到栏架,将时间增加1秒。
循环执行完毕后,游戏结束,显示所用时间。
如何让小猫跑起来?
我们用事件模块的“当按下空格键”控制小猫跑步。
按下空格键,将变量“距离”增加1,相当于小猫跑了1步。
在这个过程中,我们用改变小猫的造型,但是保持小猫坐标不变,让栏架向小猫运动,模拟小猫的相对运动的视觉效果。代码如下:
小猫角色的脚本,改变造型,增加变量“距离”的值。
栏架角色的脚本,按下空格键后,用移动(-20)模块,实现向左移动。
这里特别需要注意的是,我们用了下面三个模块的组合语句,实现“空格键没有按下前不执行后面的代码”这个逻辑,防止长按空格键,出现连续移动和连续计数。
栏架在向左移动的过程中,如果小猫碰到了栏架,那么,用另一个造型,栏架倒地。
如何让小猫跳起来?
这是这个游戏的难点,因为我们想让小猫的起跳符合物理运动规律,大家熟悉下物体竖直运动的公式:V=V0-gt
这里V是任意运动时刻的速度,V0是初始速度,g是重力加速度常数,我们这里用10,t是运动时间。
小猫起跳,代码是这样的:
当按下上移键,发出一个开始计时的广播;
设定小猫跳跃的初始速度为10;
计时模块如下:
根据小猫竖直运动的加速度公式,计算小猫的运动速度;
然后改变y坐标的距离,将速度转化为小猫跳起来的位置。
这里需要注意的时,当小猫跳到最高点后,会自由落下,我们需要判断小猫落到地面的情况,防止小猫一直下坠。
如果小猫碰到了地面(碰到黑色)并且上移键没有按下:
将小猫的竖直速度(Vy)设为0;
同时将小猫的y坐标设为初始值-100;
同时,发出结束计时的广播。
小猫脚本完成。
下面编写栏架的脚本。
栏架如何运动
按下空格键,小猫开始跑步,这个过程中,栏架不停向小猫方向移动,栏架移动到左边缘时,用克隆自己命令,重新生成一个新栏架。代码如下:
游戏开始时,初始化位置和形状。
碰到了左边缘?在右边初始位置克隆自己。
当每一个克隆体启动时,
都调用下面的代码。
下面我们看下这个游戏运行的画面:
-End-