Scratch 飞猫吃鱼
本文章将在Scratch Desktop 3.0
中完成飞猫吃鱼
的功能
运行截图:
下面先简单介绍编程,然后进行实战。
程序组成,简单来说就是:
- 组织数据
- 操作数据
- 获得结果
飞猫吃鱼也不例外,游戏最终结果就是得分,如吃到一条鱼得1分,吃到一个樱桃得一分,等等。
先不急写代码(搭积木),先分析需求(实现效果,及猫的操作)
需求分析:
- 根据习惯,让鱼从右往左游。
- 一只猫可以全屏幕飞,碰到鱼就可以把鱼吃掉,并且得1分。
- 鱼被吃掉后,会重新从左边游出一条鱼来。
分析使用情况:
- 设置
↑↓←→
来控制猫的飞行位置。猫不能飞出游戏屏幕。由于设计的是在天空飞,屏幕下面会有一段陆地,这一段也不让猫飞。 - 猫无论从那个位置碰到鱼都把鱼吃掉。(简化操作,不需要吃的动作)
- 鱼到吃掉后,会立即消失,并且从右边刷出一条新的鱼来。
- 如果猫吃的鱼越多,那么鱼游动速度变得更快,即增加相应的难度。
开始实现代码(搭积木)
增加场景
首先增加场景,在右下角
选择Blue Sky
的背景图用作的场景。然后在场景中增加一只飞猫
作为操作的角色。
增加猫
下面就可以新增猫的操作了.
先到角色区域选择cat flying
, 并选中。上面分析到用↑↓←→
按键来控制飞猫的飞行,在事件
中找到当按下[空格]建
的积木,放置到编程(代码)区,四个分别放,然后把[空格]
分别调到[↑]
,[↓]
,[←]
,[→]
。然后添加事件的处理,知道scratch把整个屏幕分成了xy轴,中心点为原点,所以按↑
,就相当于增加Y轴的值,即选择运动
中的将Y坐标增加(x)
,并放置到当按下[↑]键
下面。这个就可以按↑
来操作这只飞猫上移了。
同理,可以设置其它三个键位。这样就控制猫在满屏幕飞了。
问题来了
需要让猫在屏幕的一部分飞,比如地上就不能飞,这个时候怎么办呢?需要给猫设置一个边框,而超出这个边框的时候就不响应对应的按键消息了。这是就要明确的知道猫飞到了什么位置,然后用这个位置跟限制边框比较,看是否超出了。
变量出场了
先增加6个变量,分别为猫位置X
,猫位置Y
,场景顶
,场景底
,场景左
,场景右
。需要给这些值设置初始化值。这个时候就要监听旗帜事件,分别设置为猫位置X=-120
,猫位置Y=0
,场景顶=170
,场景底=-20
,场景左=-170
场景右=170
。注意:变量是全局的
变量设好了,要让他起作用,就需要用变量控制猫的位置,并且防止出边框。用↓
操作举例:原来是按键时是直接操作猫Y坐标的,而现在直接操作变量猫位置Y
,然后在把猫Y左边设置为变量猫位置Y
。如果有经验的人,这时就会想,如果能把这二者绑定,不就完美了吗?。这时,控制猫位置Y
就相当于控制猫的位置了。那如何控制猫不坠落到地上呢,需要引入条件分支
。把条件分支如果<>就{}那么{}
插入到当按下[↓]键
的积木中,并在条件中加入 运算
<<(猫位置Y) < (场景底) >或<(猫位置Y) = (场景底) >>
, 然后在那么
中加入变量控制将[猫位置Y]设置为(场景底)
,在否则
后面加上变量控制将[猫位置Y]增加(-10)
,然后在最后面加上运动
将Y坐标设为(猫位置Y)
。这样就可以让猫不会坠地了。然后就可以操作测试,猫是否会坠地。
同理,我们也可以用同样的方法进行其它三个方向的设置。