Scratch的进阶课程-小鱼成长记

本站可以分享scratch作品,快来边学习边创作吧,点击在线创作

小鱼成长记

本讲为Scratch进阶课程第1讲,主题是一个有故事情节的游戏程序设计:“小鱼成长记”。

一、剧本介绍

首先,我们来了解一下本游戏的剧本内容,它描述的是一个小鱼的成长过程,作为主角的小鱼通过不断吃掉海洋中的其他比自己还小的鱼来长大,最终战胜鲨鱼完成成长的过程。

基本规则:

最初,小鱼的生命值为40,分数为0。

任何情况下,小鱼的生命值降为0则游戏结束。

我们设计存在两种小鱼,每种小鱼的数量都是随着时间的推移而不断增加的,主角开始只能吃掉小鱼1,每吃掉一个小鱼1,可以获得1分。

当分数达到10分时,主角身体长大好多,可以开始吃小鱼2。在分数达到10之前,小鱼如果碰到小鱼2,则生命值减少1。当分数达到10,每吃掉一个小鱼2,分数增加2分。

当分数达到100分时,就可以吃掉鲨鱼,结束游戏。

二、导入素材

新建程序,如图所示,导入背景:


 

Scratch的进阶课程-小鱼成长记_第1张图片

 在角色列表中,删除小猫角色,导入:

Scratch的进阶课程-小鱼成长记_第2张图片

Scratch的进阶课程-小鱼成长记_第3张图片

 


复制2次,得到Fish2和Fish3两个新角色。

将Fish角色的造型选为4,作为玩家可以操控的主角:

Scratch的进阶课程-小鱼成长记_第4张图片


 将Fish2角色的造型选为3,作为较小的可以一开始就能被主角吃掉的小鱼1:

Scratch的进阶课程-小鱼成长记_第5张图片

 将Fish3角色的造型选为2,作为较大的一开始不能能被主角吃掉的小鱼2:

Scratch的进阶课程-小鱼成长记_第6张图片


 增加一个鲨鱼角色:

 

Scratch的进阶课程-小鱼成长记_第7张图片

 


 四个角色全部登场:

 

 

Scratch的进阶课程-小鱼成长记_第8张图片

 重新修改角色的名称,分别为:主角、小鱼1、小鱼2和鲨鱼:

Scratch的进阶课程-小鱼成长记_第9张图片


 选中主角,为主角创建2个变量,分别为生命和分数,并在脚本区初始化这两个变量,当开始时,让生命值为40,分数为0。

 

Scratch的进阶课程-小鱼成长记_第10张图片

Scratch的进阶课程-小鱼成长记_第11张图片

 

 

 

变量初始值设定的代码如下:

 

 

 

 

 

 

 

 

 

Scratch的进阶课程-小鱼成长记_第12张图片

 

三、让每个角色都能动起来

1、让主角能被操控

 

 

 

 

 

 

 

Scratch的进阶课程-小鱼成长记_第13张图片

主角的移动,由键盘的上、下、左、右四个方向键来控制,实现控制的代码如图所示:

2、小鱼1和小鱼2的控制

这里有必要给大家介绍一组新的指令:

Scratch的进阶课程-小鱼成长记_第14张图片


 在入门阶段的课程中大家可能初步接触过克隆指令,这组指令的功能是复制一个当前角色的副本,这个副本继承了角色的全部信息和指令,可以作为一个个体单独存在和运行。

那么我们为什么要使用副本而不是直接定义多个角色呢?因为,我们希望小鱼1和小鱼2随着时间的推移,不断的增加数量出现在屏幕中,但是,无法预测游戏能够持续多久,更不知道究竟需要生成多少个小鱼角色,所以直接定义角色就非常困难。再说,小鱼角色们的行为基本类似,用克隆的方法实现小鱼数量的增涨会非常的方便。

在角色指令中,每当执行一次“克隆”指令,则屏幕中生成一个与角色完全相同的角色副本,副本继承角色的全部指令动作。克隆体生成后,需要为克隆体编写相应的指令,为克隆体编写的指令起点为“当作为克隆体启动时”这条指令,终点是“删除本克隆体”。特别强调的是,当克隆体不再使用时,最后一定要执行“删除本克隆体”指令,因为每一个克隆体都需要占用一部分计算机资源,如果不能在最后执行删除掉克隆体回收资源的操作,计算机会因为被占用的资源过多而死机,后果很严重。

Scratch的进阶课程-小鱼成长记_第15张图片


 上面的代码实现了小鱼1的不断出现。我们的想法很简单,只需使小鱼1和小鱼2在屏幕中简单地游动就行啦。

这段代码的目的是每隔2-5秒,在屏幕中的随机区域,克隆一个小鱼1的副本,这里我们使用了显示克隆体,隐藏本体的技巧,这样做的目的是为了保证,在游戏过程中被主角吃掉的都是克隆体的小鱼,因为本体小鱼始终处于隐身状态,可以用来持续操作产生新的小鱼。

大家现在可以点击开始运行一下,会发现每隔一段时间,屏幕中会出现一条小鱼,小鱼出现的位置是随机的,游动的路线也是随机的。

继续编辑下列代码:

Scratch的进阶课程-小鱼成长记_第16张图片

 下面我们增加小鱼1被吃掉的代码:

Scratch的进阶课程-小鱼成长记_第17张图片


 以上代码实现了小鱼1的克隆体启动后,如果碰到主角,就会被主角吃掉,分数+1;如果碰到鲨鱼,会被鲨鱼吃掉,分数不变。

我们可以用同样的方式编写小鱼2的代码:

 

Scratch的进阶课程-小鱼成长记_第18张图片

Scratch的进阶课程-小鱼成长记_第19张图片

小鱼2与小鱼1代码的最大差别在最后这段,当碰到主角时,小鱼1直接被吃掉,而小鱼2需要做个判断,当分数没有达到10分时,主角假设打不过小鱼2,生命值被减1,而当分数达到10分时,主角吃掉小鱼2分数加2。

 

这段代码中,生命值-1后等待2秒非常重要,如果没有这个等待,我们会发现,主角吃掉小鱼1没有啥问题,但是当主角分数不够10分而碰到小鱼2时,生命值会瞬间下降非常多,甚至很快出现负数,这是什么原因呢?查看我们代码的最后一段,这段的逻辑是,一旦主角碰到小鱼2的克隆体,如果分数不足10分,则生命值将会下降,但是此时小鱼2并没有被吃掉,还是存在的,因此他会持续的碰到主角,分数也就会持续的下降。

我们希望在这种情况下,每当分数减少1分时,给主角一个逃离的时间,因此增加了一个合适的等待时间。

3、鲨鱼的控制

鲨鱼的运动代码:                          鲨鱼也可以被吃的代码:

 


 

Scratch的进阶课程-小鱼成长记_第20张图片

 

 下面我们回到主角的脚本区,编写如下代码

 

Scratch的进阶课程-小鱼成长记_第21张图片

 

 这部分代码的主要目的,在开始和中途分数到10的时候各说一句话,提醒游戏者哪种鱼可以吃,同时在分数到10的时候,让小鱼的身体变大。

当生命=0时,游戏结束:

 

 

Scratch的进阶课程-小鱼成长记_第22张图片

 补充:

1、增加一个小鱼吃掉鲨鱼之后的切换背景:

 

 

Scratch的进阶课程-小鱼成长记_第23张图片

 

Scratch的进阶课程-小鱼成长记_第24张图片

鲨鱼被吃以后,增加一个显示下一个背景,也就是出现游戏结束的画面。

2、增加水声音效:

 

Scratch的进阶课程-小鱼成长记_第25张图片

3、增加吃鱼时的音效:

这次音效小鱼采用自己录制:

小鱼1被吃:                              小鱼2被吃:   

 

Scratch的进阶课程-小鱼成长记_第26张图片

      

Scratch的进阶课程-小鱼成长记_第27张图片

     鲨鱼被吃

 

 Scratch的进阶课程-小鱼成长记_第28张图片

确保再次游戏时背景是水下

你可能感兴趣的:(scratch)