给教育者看的儿童创造性学习专题儿童编程Scratch2儿童编程

关卡类游戏《鱼塘Ⅰ》的Scratch实现

2018-08-22  本文已影响4人  一石匠人

今天用Scratch实现一个多关卡类的小游戏《鱼塘Ⅰ》(从名字可以看出可能有续集,好吧~)。这个游戏很简单(游戏场景见下图),但是需要使用大量的变量、定义函数、发布接受消息等内容。对于初学者来说还是有一定的挑战性的。好,我们来“解剖”一下这个游戏。

场景1 场景2

游戏目标:找出每一关中与众不同的鱼。

游戏机制:

1.在倒计时完成前找到与众不同的鱼,否则闯关失败;

2.有三条命,选错鱼后减少一条命;每关开始时恢复三条命;三条命用尽则闯关失败;

3.每关开始时存在一些干扰的鱼,其数量随关卡数递增;

4.每一关开始后,“干扰鱼”会按一定概率自行复制;

5.鱼游动的速度会随关卡数递增;

6.“目标鱼”以颜色与“干扰鱼”区分,其颜色接近程度随关卡数递增;

6.通过所有关卡,视为胜利。

元素说明

该游戏公由四个元素组成:场景、干扰鱼(这里称goodfish)、目标与(这里称badfish)、面板,如下图所示。

这四个元素每一个都有自身的内部结构(下文会依次说明),并且分别编写代码。这有点“面向对象编程”的感觉。

元素说明

变量说明

本游戏用的变量较多,汇总如下图。基本上通过名字就可以判断其用途。

变量汇总

场景结构及代码

场景分为三个,都是从Scratch场景库中挑选的,下图箭头所指的地方可以修改每个场景的名字。

场景结构说明

这个游戏中“场景”充当了“主控程序”的角色,全盘控制整个游戏。从下面的代码中可以看出此处用了很多消息功能和变量,稍显复杂。消息INIT只在第一关时起作用,之后每关开始相关设置都有消息prepare与begin完成。

说明下:场景代码较多,一屏截不全,所以截图了两次,见下面两张图。

场景代码1 场景代码2

颜色通过上图中的代码可以看出,本游戏中变量fishChangeColor除了控制目标鱼的颜色外还担任着另一项重大任务:判断游戏胜利进程。代码显示每三关变一下颜色(fishChangeColor减去一),当fishChangeColor=0的时候,游戏通关胜利

角色结构与代码

角色内部结构与场景类似,也是三个部分每关随机更换。

角色结构说明

“干扰鱼(goodfish)”代码较多,截了两屏,见下面两图。这里定义了几个函数,使得代码结构跟个清晰一些,体现了面对对象编程的“封装”特点。从代码中可以看出,干扰鱼负责播报进行到了第几关。

goodfish代码1 goodfish代码2

“目标鱼(badfish)”的代码相对简单得多,如下图。代码中可以看出,无论干扰鱼还是目标鱼,被点击的时候的是广播clicked消息,对whoClicked进行赋值,这里体现了面向对象编程的“多态”特点。

badfish代码

面板结构及代码

面板的结构与场景和角色也非常相近。三个部分分别为帮助说明、失败、胜利。

说明面板结构

第一关开始,由INIT函数控制显示帮助面板,告诉玩家本游戏需要找出与众不同的鱼。之后通过接收消息failed\Success来显示失败、成功面板。

面板代码 胜利面板 失败面板 说明面板

完善

准确地说一款游戏永远没有终结的时候,一直可以变得更好。我们可以尝试加一些音效、调整一下数值、增加一些特效、增加一些惊喜。

加油!

上一篇下一篇

猜你喜欢

热点阅读