编程猫开发《摘星星小怪物》游戏

【阅读提示】编程猫中的源码编辑器是一款相似于Scratch的软件,并且在实现功能上作了大幅度的改进与提高。所以,熟悉Scratch编程的朋友能够很容易阅读本文;可是,其中的部分积木代码与Scratch并不相同。Scratch积木提供了少儿编程最基础的功能积木;编程猫源码编辑器则扩展了Scratch功能,并进行了大量简化。编程

根据本人使用百度指数的粗略分析,编程猫是截止目前国内最大规模且技术研发含量最高的少儿编程(含机器人编程)公司,值得关注。框架

1、游戏情景与快照

游戏未开始时界面如图所示:
编程猫开发《摘星星小怪物》游戏编辑器

游戏情景是这样的:夜路上小怪物要回家,遇到头顶上可爱的小星星。因而,好奇的小怪物左跳右跳跑来跑去地捉起了可爱的小星星,可是小怪物功力有限(6个生命值)——若是在指定时间和有限功力内摘不到小星星,则游戏线束。每摘到一颗小星星,得1分;每错过一次摘取机会,功力值会减小,直到为0——标记游戏结束。其中,功力值使用屏幕下方的状态条表示。ide

下图给出了游戏运行中的某一时间截图:
编程猫开发《摘星星小怪物》游戏测试

2、系统模块图

编程猫开发《摘星星小怪物》游戏

系统实现主要难点在于:动画

(1)小怪物跳跃高度与移动速度的控制(经验值)设计

(2)星星消失的时间控制(随着游戏难度的提高)与出现位置计算游戏

(3)多星星状况下使用克隆技术克隆小星星(本版本游戏中未提供支持)进程

(4)协调游戏中各元素的通信ip

3、角色与数据设计

(一)角色

游戏中,包括舞台背景在内,共有9个角色(精灵),如图所示:
编程猫开发《摘星星小怪物》游戏

注意:失败界面是使用一个前景角色实现的。

(二)变量定义

在编程猫中,相似于Scratch,变量分为普通变量与列表两种类型。由于本游戏数据并不复杂,因此只使用了普通变量。各变量定义及含义描述以下:

如本人之前文章中的变量定义形式同样,全局变量使用“gv”(global variable)开头,局部变量(本地变量)则以“lv”(local variable)开头。


  • gv游戏状态:描述游戏的不一样阶段,共有4种值:未开始,开始游戏,游戏成功,游戏失败。
  • gv声音开:用于描述全局中游戏声音开关是否打开:1——打开;0——关闭。
  • gv得分:计算游戏得分,初始为0,每摘到一颗星星,得1分,对应于游戏屏幕左上角的金币数。
  • gv生命值:这个生命值对应于屏幕左下方的生命进度条,使用6个造型分别表明小怪物的生命值大小(起始有最大6条命)。
  • gvStarDuration:小星星生命持续时间长度,超出这个时间长度,星星会隐藏起来。
  • gvMaxStarDuration:小星星生命持续时长最大值,默认为5。
  • gvMinStarDuration:小星星生命持续时长最小值,默认为3。
    其余私有变量,在后面介绍每个角色编程时再一并介绍。

4、角色编程

(一)背景角色

有些人编程中,背景角色基本不进行编程。可是,通过一段时间的实践,本人认为在实现系统功能全局统筹与监管等功能时,使用背景角色来编程最合适。本游戏中,背景角色主要功能以下:


  • 系统全局变量的初始化
  • 背景音乐控制
  • 全局游戏进程的监管

编程猫开发《摘星星小怪物》游戏

编程猫开发《摘星星小怪物》游戏

编程猫开发《摘星星小怪物》游戏

对最后一个代码段做一下解释。开始按钮点击播放“开始游戏”消息,在接收到此消息后,建立一个无限循环,在这个循环中实现整个游戏系统的进程监听,并完成协调任务。根据前面描述,小怪物在游戏开始有6条命,当超过指定时限,生命值减一,由描述生命值的进度条指示。而后,重置计时器,再次循环,当生命值为0时,播放游戏失败的消息,并退出此无限循环。

在上述代码中,【告诉(...)执行】积木和【跳出循环】是编程猫特有的。其中,【告诉(...)执行】积木算是广播积木的简化形式,可使用广播方式来代替。由于发出消息后,接收方仅完成极少许的工做;这种状况下,不须要使用广播方式转来转去,这种方式简化了此操做。【跳出循环】在此可使用【中止(当前积木)】代替。

(二)小怪物角色

共有四部分代码:

(1)本地(私有)变量初始化

(2)按键编程

(3)跳跃编程

(4)水平方向行走速度编程
编程猫开发《摘星星小怪物》游戏

本处定义了5个局部变量。其中前面两个变量是布尔类型(编程中常用取值仅为1和0的这种特殊整数类型代码),分别用于指示是向左仍是向右加速移动。第3个变量表明水平方向移动的速度,第4个是水平方向最大速度,最后一个是水平方向加速度,后面几个变量的值须要根据游戏中实际须要不断调整。

编程猫开发《摘星星小怪物》游戏

编程猫开发《摘星星小怪物》游戏

这段代码功能有二:实现跳跃(跳起与下落);播放跳跃声音。
编程猫开发《摘星星小怪物》游戏

这段代码的功能是,根据移动方向计算水平移动速度。两个物理公式:

  • v=at
  • s=vt
    前面提到,加速度是一个经验值(就是根据游戏须要人为不断调整),那么时间t是怎么来的?我使用的是Cocos Creator中的默认值(Cocos Creator是国内著名的基于Cocos2d-x框架的使用JavaScript开发的内容创做系统,它的默认屏幕刷新频率是1/60,即1秒刷新60次)。所以,上面的0.0167是1/60的大约计算结果。

另外,这里设置了一个速度最大值,由于当移动速度达到至关大时,游戏难度太大,让玩家挫败感太强,有可能致使其放弃。

(三)星星角色

共有两段代码。
编程猫开发《摘星星小怪物》游戏

编程猫开发《摘星星小怪物》游戏

在初始化中,定义了一个描述星星与小怪物合适距离的局部变量,当距离小于这个变量值时,认为小怪物摘到星星。这也是一个经验值变量,读者能够不断调整使用。

第二段代码中,只要游戏不结束,循环一直运行下去。当星星与小怪物的距离知足条件,加分,播放音效,并隐藏。这里做了简单处理,即隐藏后稍微等一些时间,再出如今另一个位置。这个另外位置的计算是一个难点。

位置的计算中,既要考虑到舞台的实际宽度,还要考虑地面位置Y坐标,还要考虑到随机数使用。这一行最长的代码须要结合经验值做仔细调整测试。

接下来,这里定义了两个变量:gvMaxStarDuration和gvMinStarDuration,分别表明星星的最大存活时限与最小存活时限,默认是5和3。当前存活时限变量是gvStarDuration,它的计算也是使用随机数,并结合经验公式推断出来的。在此不做过细的介绍。

接下来的几个角色代码简单,在此仅列出,不做过多解释。

(四)其余角色

1.游戏失败角色代码

编程猫开发《摘星星小怪物》游戏

2.地面角色代码
编程猫开发《摘星星小怪物》游戏

3.生命值进度条代码
编程猫开发《摘星星小怪物》游戏

4.声音角色代码
编程猫开发《摘星星小怪物》游戏

5.开始按钮角色代码
编程猫开发《摘星星小怪物》游戏

5、小结

本文介绍使用编程猫Kitten编辑器开发一款小游戏《摘星星小怪物》的完整过程。经过该游戏的开发过程有助于你深刻了解使用编程猫Kitten编辑器的完整过程和技术难点,从而为进一步深刻灵活应用编程猫开发各类创意程序打好基础。游戏中的最大难点在于结合物理知识经验值的肯定,例如,小怪物移动速度、小星星出现的随机位置与间隔时间等。有兴趣的朋友,能够基于此做进一步扩展研究,例如在以下方面:

  • 引入克隆技术,建立多个小星星,增长游戏难度,造成多关卡游戏
  • 摘到星星与星星消失时使用动画特效
  • 引入道具改进小怪物摘取星星的方法......
相关文章
相关标签/搜索