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

作者: 一石匠人 | 来源:发表于2018-08-22 22:33 被阅读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来显示失败、成功面板。

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

    完善

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

    加油!

    相关文章

      网友评论

        本文标题:关卡类游戏《鱼塘Ⅰ》的Scratch实现

        本文链接:https://www.haomeiwen.com/subject/jtluiftx.html