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

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

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

一、游戏情景与快照

游戏未开始时界面如图所示:

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

下图给出了游戏运行中的某一时间截图:

二、系统模块图

系统实现主要难点在于:

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

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

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

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

三、角色与数据设计

(一)角色

游戏中,包括舞台背景在内,共有9个角色(精灵),如图所示:

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

(二)变量定义

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

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


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

四、角色编程

(一)背景角色

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


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


对最后一个代码段作一下解释。开始按钮点击播放“开始游戏”消息,在接收到此消息后,创建一个无限循环,在这个循环中实现整个游戏系统的进程监听,并完成协调任务。根据前面描述,小怪物在游戏开始有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.开始按钮角色代码

五、小结

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

  • 引入克隆技术,创建多个小星星,增加游戏难度,形成多关卡游戏
  • 摘到星星与星星消失时使用动画特效
  • 引入道具改进小怪物摘取星星的方法......

原文地址:https://blog.51cto.com/zhuxianzhong/2476320

时间: 2024-10-13 16:52:05

编程猫开发《摘星星小怪物》游戏的相关文章

【读书笔记-《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)

3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar.html 在Android应用开发中,ProgressBar(运行进度条)是比较常用到的组件,例如下载进度.安装程序进度.加载资源进度显示等.在Android中提供了两种样式来分别表示在不同状态下显示的进度条,下面来实现这两种样式.默认进度条是圆形,通过style属性来指定系统进度条的大小:sty

【读书笔记-《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)

3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottomand

最大的幻术-游戏开发-到底是先学游戏引擎还是先学游戏编程

学习游戏的目的 我们学习游戏制作,游戏开发,游戏编程,游戏XX,我们的目的只有一个,打造一个非常牛逼,非常屌,非常让人开心的虚拟体验.我们用自己的学识让玩家在虚拟世界征战,生活,一步一步的让玩家幸福!那么我们的目的只有一个,让玩家知道自己的幸福在哪里,并且学会追求自己的幸福.当然,每个人对幸福的定义不一样.那么,我们只好让玩家来体验我们所来表达的最通俗的,最普遍的幸福体验,然后慢慢引导玩家去寻找自己的幸福体验.可能,在最后玩家都会离开游戏,离开虚拟世界,(对,这是真的,玩家需要一步一步达到定点,

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被

javascrpit开发连连看记录-小游戏

工作之余,总想做点什么有意思的东西.但是苦于不知道做什么,也就一直没有什么动作.在一个午饭后,跟@jedmeng和@墨尘聊天过程中,发现可以写一些小东西来练练手,有以下几点好处: 1. 加强巩固前端相关知识 2. 可以用一些平时项目中想用但没用的新东西 3. 一块儿做相同的东西,可以分享各自不同的想法 先来一张效果图,也可以来这里玩玩~      接下来就介绍一下做这个小游戏,自己的一些步骤和思路: 首先就是熟悉连连看的规则,为此还专门下载了一个app感受了一下,规则简单的说就是:找到两个相同的

带你使用h5开发移动端小游戏

带你使用h5开发移动端小游戏 在JY1.x版本中,你要做一个pc端的小游戏,会非常的简单,包括说,你要在低版本的浏览器IE8中,也不会出现明显的卡顿现象,你只需要关心游戏的逻辑就行了,比较适合逻辑较为简单的小游戏,在JY官网也写了很多的小游戏demo,但后来由于工作的缘因,一直没太去维护他,真是一转眼,已经是移动互联网的时代了,5年后的今天,有了重新构思JY框架的冲动,于是全新的JY2.0开始构建了.它将只适用于h5的移动端游戏开发,它将更多的去关注更复杂的js游戏,不在局限于红白机时代. 在使

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

一款JavaScript开发的扫雷小游戏

<style><!-- #FLM_main { margin:50px auto; padding:20px; background:#EEE; zoom:1; width:650px; } #FLM_main table { border-collapse:collapse; background:#EEE; float:left; } #FLM_main table td { border:1px solid #CCC; font-size:20px; width:38px; hei

【读书笔记-《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)

3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.html Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多. <?xml version="1