前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关卡类游戏《鱼塘Ⅰ》的Scratch实现

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

作者头像
一石匠人
发布2018-09-12 09:52:08
6750
发布2018-09-12 09:52:08
举报
文章被收录于专栏:儿童编程儿童编程

今天用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来显示失败、成功面板。

面板代码

胜利面板

失败面板

说明面板

完善

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

加油!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档