分享

慢教育Scratch教案分享 / 大鱼吃小鱼

 小曾4om1ilfwen 2017-08-20



上周任务

1、设计一条可以用键盘控制移动的小鱼

2、当小鱼吃到比它大的鱼,游戏结束

3、当小鱼吃到比它小的鱼,体型变大

4、当小鱼吃到章鱼,体型变小


教案如下



设置游戏背景,

可在scratch背景库中选择一个图片背景。


然后定义角色




我们采用“在角色库中选取角色”,

在角色库中水下主题里面选取鲨鱼作为游戏主角色。

当然,你也可以自己用绘画工具创建一个角色。

 

新建鲨鱼角色后,

点击“造型”标签,可以看到这个角色有三个造型,

不同造型的切换,会让游戏更加逼真。

关于造型的使用,我们在脚本中再介绍。




现在需要对鲨鱼造型做一地简单修改

 


在造型编辑区,放大图片,选择矢量模式

采用“为形状填色工具”,

把鲨鱼牙齿的黑色填充成黄色,

因为我们在编辑脚本的时候,

需要有一个判断,

小鱼是否碰到鲨鱼牙齿,

这里我们设置一种特定的颜色,作为判断条件。

(这个颜色可以自由选择,只有能加以区分就可以。)




第二个角色为小鱼

我们在造型编辑区,

添加三种不同类型的小鱼,

在程序中,

可以随机显示,

以增加游戏的趣味性。



第三个角色,

我们定义一个比鲨鱼大的物种,

当鲨鱼碰到它时,game over



第四个角色,

我们选择章鱼

当鲨鱼碰到章鱼的时候,鲨鱼会变小。

章鱼有两个造型,

可以让章鱼游动时更加逼真。

  

角色设置完毕,下面开始编辑脚本。

 

首先编辑游戏主角色鲨鱼的动作。

 

用键盘的上下左右键控制鲨鱼移动

当鲨鱼吃到比它小的鱼时,

吃掉小鱼,自己变大

当鲨鱼吃到比它大的鱼时,

显示“OI am dead”,游戏over

当鲨鱼吃到章鱼时,自己变小

 

点击绿旗游戏开始

我们给鲨鱼一个初始大小,

这里设定为80

另外,

需要设置鲨鱼的旋转方向为左右方向,

避免鲨鱼上下倒置

我们用四个“如果……那么”指令,

加上按“键是否按下”的侦查模块作为判断条件

用一个重复执行命令

代码如下:



然后编辑小鱼的动作

 

游戏开始时,

我们随机选择小鱼角色的一个造型

怎么实现呢?


我们采用了一个“连接”和“随机数”两个运算符模块,

生成一个随机的造型名称



然后用切换造型模块,合成如下:



 

为避免单调,

小鱼角色初始大小,也采用随机的方式

鲨鱼的初始大小为80

我们生成一个5070之间的随机数,

作为小鱼的大小




同样的,运动方向也随机生成




小鱼的移动速度也随机生成

用重复执行,让小鱼移动

碰到边缘反弹




小鱼这个角色的关键是

需要判断是否碰到鲨鱼的牙齿

碰到的时候还需要再判断,

比鲨鱼大还是小?

如小,被鲨鱼吃掉,

如大,game over

 

第一个判断用是否碰到鲨鱼牙齿的颜色,

我们这里设置了黄色

鼠标点击这个模块的方框处

,鼠标变成手形

在鲨鱼牙齿处,

点选黄色,即可拾取颜色




第二个判断用两个角色的大小为参数,

用运算符进行比较

小鱼角色大小,在“外观”模块里面选择“大小”


鲨鱼角色的大小

需要用到侦查模块里的状态获取

点击“X坐标”边上的黑色小三角,




出现下拉菜单,选择“大小”




小鱼判断脚本合成如下:




上面的脚本中,还有两条广播消息

当小鱼碰到鲨鱼牙齿,并且小鱼比鲨鱼小

此时,发出一个“eat”广播消息

否则,发出一个“over”广播

 

小鱼的完整脚本如下:




然后我们来考虑发出“eat”广播后

各个角色都需要处理什么情况?

 

当小鱼接收到“eat”消息后

它从当前屏幕消失

稍后在屏幕的随机位置生成一条新的小鱼

同样,小鱼大小为5070之间随机数

代码如下:




当鲨鱼接收到“eat”消息后

让它发出一个音效

然后出现张开大嘴的造型

最后,让鲨鱼大小增加一个单位

代码如下:




当鲨鱼接收到“over”广播后

显示“oI,m  dead.”然后“停止全部”

如下:




同样方法处理螃蟹角色

只是我们把它的初始化大小设置为比鲨鱼咬大

90110之间选择一个随机数作为初始大小

尽管螃蟹的初始大小要比鲨鱼大

当鲨鱼吃掉足够的小鱼,也有可能变得比螃蟹大

所以,也要处理螃蟹被鲨鱼吃掉的情况

这里需要定义一个新的广播消息

我们设置了“eat2”广播消息




螃蟹收到“eat2”广播后




鲨鱼收到“eat2”广播后


 


然后我们定义章鱼的运动

初始化大小




设定章鱼从水底随机位置往上游




游到水面后,回到水底重新上游

y坐标判断




随机速度上升



上升过程中,变换造型




如果鲨鱼牙齿碰到章鱼,发出“small”广播



完整代码如下




鲨鱼收到“small”广播时

发出一个音效

角色大小减少一个单位

代码如下:




整个游戏脚本编写完毕

运行效果如下




如果有兴趣,

你还可以给游戏增加计分功能

想想,该怎么实现?



听说爱编程的孩子都在这个群

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多