基于Funcode平台的儿童益智类游戏设计与开发

来源 :软件 | 被引量 : 0次 | 上传用户:yy20090907
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘  要: 本文基于Funcode平台,以“小小饥饿鲨”游戏为例,研究儿童益智类游戏的设计与开发方法。代码采用了C++面向对象程序设计方法,结合平台提供的事件处理函数实现游戏的功能,游戏中玩家通过不断吃掉指定类型的鱼来获得相应的生命值,并且在获得相应数量的生命值后不断升级。
  关键词: Funcode平台;游戏开发;软件设计;儿童益智
  中图分类号: TP3    文獻标识码: A    DOI:10.3969/j.issn.1003-6970.2020.08.016
  本文著录格式:刘硕,王海森,李其伟,等. 基于Funcode平台的儿童益智类游戏设计与开发[J]. 软件,2020,41(08):52-55
  【Abstract】: Based on Funcode platform, this paper takes Tiny Hungry Shark as an example to study the design and implement methods of children’s puzzle games. C++ object-oriented programming method is employed and functions of event handling provided by the platform are combined to implement the function of the game. In the game, the player continuously eats the specified type of fish to obtain the corresponding health value, and continuously upgrades after obtaining the corresponding number of health value.
  【Key words】: Funcode platform; Game development; Software design; Children’s puzzle
  0  引言
  随着我国教育改革的不断深入与发展,《国家中长期教育改革和发展规划纲要(2010-2020年)》[1]中曾明确指出:要推进儿童教育信息化进程,促进儿童教育领域的教育内容、教学手段和方法现代化。游戏作为儿童的基本活动,由于具有自主性的特点,相较于其他类型的活动更加强调儿童的自主参与,强调内部动机的引导,注重在其内部动机的激发下实现自我成长,是儿童获得良好发育的重要方式。本项目开发的儿童益智类游戏“小小饥饿鲨”,旨在通过对游戏中不同游戏角色种类的判断以及使用键盘进行灵活操作等方式训练儿童,提高孩子的判断能力和反应能力,对儿童的早期发育起到一定促进作用。
  Funcode[2]是上海锐格软件有限公司开发的,支持C、C++、Java、Python等语言的基于游戏和动画界面的综合实验教学平台,用于开发互动式游戏或应用系统。Funcode提供了各式素材、API以及相关页面布局,简化了游戏的开发过程,让游戏的设计变得更为简单及有趣。
  1  游戏设计
  1.1  游戏规则
  游戏玩家所面对的有普通鱼以及特殊鱼。对于这两种鱼的碰撞规则是不同的:碰撞到普通鱼的话,若该鱼的等级比玩家低,那么玩家吃掉普通鱼,并获得一定的生命值;否则,若是该鱼的等级高于玩家等级,则普通鱼吃掉玩家鱼。当玩家吃掉足够的普通鱼并达到相应数量生命值时,即可升级(1-4级)。而对于特殊鱼,玩家必然是会被减掉相应的生命值。当玩家受到的伤害使生命值降低到对应等级生命值标准时会被降级。若玩家的生命值变成0或者被普通鱼吃掉,玩家失败,游戏结束;或者等级4而且生命值达到5000及以上时,游戏结束,并判定为玩家获胜。
  1.2  游戏界面设计
  色彩常常在儿童的认知中起到重要作用。朱敏等[3]在对色彩在儿童APP界面中的作用研究中指出:色彩可以极大地提高对真实世界的还原度,减少儿童的认知障碍和学习负担,并且颜色的使用可以还原事物的固有属性,使儿童更容易辨识。为此,将游戏界面的整体色调以及游戏角色本身的颜色设计为蓝色,而这一色调与游戏本身的背景“海洋”相呼应,能够为玩家带来更好的游戏场景还原,提供更好的沉浸式游戏体验。
  在界面布局设计中,为了减轻儿童的视觉负担,需要将图标尽可能地简洁突出一些。游戏界面的正中间突出了游戏主角——小小饥饿鲨的游戏形象以及游戏按键操作提示,充分符合儿童的心理和认知需求,对儿童这一用户群体非常友好。另外,在界面左上角,设置有等级和生命值这两个用户可见参数的显示框,游戏中玩家能够随时直观地看到自己的等级和生命值变化。
  1.3  游戏难度设定
  方浩等[4]认为,如果游戏的难度远超过了玩家的真实能力水平,或明显过于简单,都可能导致玩家放弃游戏,放弃对APP的继续使用。该游戏中,普通鱼和特殊鱼的属性设定是根据玩家自身等级变化的,即通过判定玩家自身等级来产生具有不同属性的精灵,因此,游戏的难度会随着玩家等级的不断提升逐步递增,从而保证了游戏的难度与玩家的能力水平相匹配并具有足够的挑战性。以下为两种鱼的详细属性设定:
  普通鱼的产生:当玩家等级为1时,只产生1级和2级的鱼,且两种等级鱼产生的概率是不一样的,1级鱼产生的概率为65%,2级鱼为35%;当玩家等级为2级时,会产生1、2、3共三种等级的鱼,等级1概率为30%,等级2为50%,等级3为20%;当自身等级不低于4级时,1、2、3、4四种等级的鱼的产生概率分别为10%、20%、50%、20%。   特殊鱼的产生:玩家为1级的时候,特殊鱼伤害值为10;玩家等价为2级的时候,特殊鱼伤害值为100;为3级的时候,特殊鱼伤害值为 500。同时,该类型鱼的刷新时间被设定为5-10秒/次。
  在该游戏中,HP代表生命值,Level代表等级。游戏中的HP和Level变化规则如表1所示。
  1.4  游戏的奖励机制
  郑晓丽等[5]认为,要善于利用游戏的机制和元素, 如过关、成功的聲音、徽章、等级等,让儿童获得成就感和快乐感,维持其学习动机。因此,笔者设计了该游戏两方面的奖励机制,现作简要概述:
  首先是采用了等级的激励方法。玩家需要通过不断吃鱼来获得生命值并在达到相应阈值后升级,从而使玩家能够不断地获得激励,建立对游戏的主动性,使其更好地专注于游戏本身。其次,采取视觉上的激励方法。玩家控制的游戏角色本身的模型大小在不同等级时是不同的:在游戏开始玩家等级为1时,其模型大小设定仅为1/4,并在玩家升级至满级4级的过程中逐步增大至1。这种视觉上的成就感同样可以很好的激励玩家,带来更好的游戏体验。
  2  具体实现
  2.1  游戏的初始化
  Funcode平台实际是一个小型游戏引擎,对设计处理流程的细节进行了封装,将游戏的运行过程划分为游戏初始化、游戏运行和游戏结束三个函数[2]。在每一关开始时,该游戏都会进行一次初始化,清空上一次游戏的数据。GameMainLoop作为主循环函数,被不停地循环反复调用,引擎每刷新一次屏幕,此函数即被调用一次,从而用于游戏的开始、进行中以及结束等状态的处理。该函数中包含了一个判断游戏状态的switch语句,当判断为游戏开始时,即调用GameInit函数初始化游戏,清空上一局相关数据,并将游戏状态设置为进行中,同时创建玩家控制的鱼,该鱼出生等级为1,生命值为10;不然,若判定为游戏进行中,则处置各类游戏逻辑。
  2.2  存储结构的实现
  因为随机鱼产生的数量是随机的,所以需要使用一个如图2所示的双链表(FishList)来存储游戏中的鱼,从而便于鱼的插入和删除,当添加鱼时就创建一个新节点插入到链表的最后,遍历一遍列表找到最后一个节点,插入到链表的末尾。同样,删除一个鱼的时候是根据鱼的名字进行删除的,遍历链表,找到与删除鱼的名字相同的节点,从链表中移除该节点,并删除该鱼在地图中的显示。在游戏结束时,则按序删除链表中的每个节点,释放内存,最后将头节点删除。使用该存储结构每当创建一个鱼时,就动态地申请相应的存储空间,进而可以避免不必要的空间浪费。
  2.3  游戏精灵的产生与控制
  精灵是Funcode游戏中的一种术语,在Funcode平台,一切游戏资源都称为精灵,如图片、动画、特效、文字、声音等。所有的精灵都继承了class CSprite这个在Funcode中已经封装好的基类,在该类中定义了精灵坐标、X朝向等属性。本游戏中的鱼也是一种精灵。不论是玩家鱼、普通鱼还是特殊鱼,都继承了所有鱼的基类(class CgameSprite),而这一基类继承了class CSprite。自定义类的UML图如图3所示。当鱼产生时,创建该鱼的对象实例,将该鱼添加到存储链表中,给予坐标及速度。对于玩家鱼,游戏运行初始化时,会产生一个玩家鱼的精灵位于屏幕的水平垂直正中心。因为游戏地图宽高比为2∶1,所以设定玩家通过键盘控制鱼移动时,水平速度是垂直速度的两倍。对于普通鱼和特殊鱼,其产生的位置是在地图右侧边界的外侧产生,然后在边界右侧看不见的地方开始游出来,因此是在世界的右侧再加一点距离,并且需要将鱼的X朝向翻转过来,这样也可以避免其他鱼直接在地图内部创建后直接碰撞到玩家鱼。
  2.4  等级及生命值的实现
  所有鱼的基类(class CGameSprite)中定义了m_iLevel为鱼的等级,m_iHp为生命值。玩家控制的鱼(CMyFish)如果m_iLevel大于普通鱼(CNormalFish)的m_iLevel,则可以吃掉该普通鱼,玩家鱼的m_iHp值更新为原来该玩家鱼对象中m_iHp值加上该普通鱼对象中m_iHp值。玩家鱼只要碰到特殊鱼(CSpecialFish),必然是被减HP,而不用进行等级判断。减去的HP值,等于该特殊鱼对象本身的m_iHp大小。游戏进行时,需要通过CGameSprite中定义的SetLevel和SetHp函数对玩家鱼对象中的等级及HP值这两个数据实时更新。
  2.5  碰撞的处理
  (1)精灵与精灵碰撞的处理
  在Funcode中提供了精灵与精灵碰撞事件的接口,并传入发起碰撞和接受碰撞精灵的名称,开发者需写碰撞事件代码[6]。在精灵与精灵碰撞事件处理的函数OnSpriteColSprite中,设置有两个参数:字符型参数“szSrcName”为发起碰撞的精灵名字,字符型参数“szTarName”为被碰撞的精灵名字。当引擎捕捉到精灵与精灵之间碰撞之后,即调用OnSpriteColSprite,首先通过Funcode提供的精灵碰撞的接口来比较各个字符串(“wanjiayu”为玩家鱼,“putongyu”为普通鱼,“teshuyu”为特殊鱼),判断哪两种鱼之间发生了碰撞,若是玩家鱼碰撞到了普通鱼或特殊鱼,则继续找到被碰撞鱼的对象实例,然后根据游戏规则对玩家HP值和等级的加减进行判断及处理。需要指出的是,碰撞之后,不管是谁吃谁,最终都要将被碰撞鱼的对象实例删除掉。精灵与精灵碰撞的处理流程图如图4所示。
  (2)精灵与世界边界碰撞的处理
  由于游戏中2种类型的鱼都是从右边游动到左边,所以需要设计一个世界边界。左边的世界边界比游戏中的场景要往左些,等鱼游出场景,碰到左边的边界之后,将其删除。该处理方式同样使用了Funcode提供的相关接口,具体实现方式如下:   在边界碰撞事件处理的函数OnSpriteColWorldLimit中,也同样分别设置了两个参数:字符型参数“szName”为碰撞到边界的精灵名字,整型参数“iColSide”為碰撞到的边界(0为左边,1为右边,2上边,3下边)。当精灵碰撞到边界时,首先根据“iColSide”的值来判断碰撞的是哪一边界,若其碰撞的边界为左边(即“iColSide”的值为0),则继续判断是不是要处理的鱼(即名字里包含“putongyu”或“teshuyu”的字符),若是,则将其删除。精灵与世界边界碰撞的处理流程图如图5所示。
  3  结语
  在游戏设计方面,作为一款益智类游戏,其简洁突出的图标设计、易上手的按键操作、精美的游戏形象、合理的游戏难度设定以及奖励机制的设计等均保证了游戏的趣味性及可玩性,能够带来良好的游戏体验。而在代码方面,经多次修改及测试,运行状况良好,无明显bug,并且有着可读性好、代码结构清晰等特点。同时,代码的拓展性良好,可以根据需求,进一步实现如对玩家分数进行保存并排名或者通过设置游戏时间以防沉迷等功能。
  
  参考文献
  [1] 国家中长期教育改革和发展规划纲要(2010-2020年) [EB/OL]. http://old.moe.gov.cn/publicfiles/business/htmlfiles/moe/ info_list/201407/xxgk_171904.html?authkey=gwbux.
  [2] 汪红兵, 姚琳, 张敏, 等. 基于Funcode平台的软件课程设计[J]. 教育教学论坛, 2016, 31: 253-255.
  [3] 朱敏, 罗岱. 色彩在学龄前儿童App界面设计中的应用探究[J]. 设计, 2019, 6: 128-129.
  [4] 方浩, 张言林, 周婷婷, 等. 学龄前儿童教育类APP交互设计研究[J]. 包装工程, 2016, 37(20): 113-117.
  [5] 郑晓丽, 陈子超. 基于游戏化学习的汉语拼音教育软件设计[J]. 教育信息技术, 2019, Z2: 109-112.
  [6] 陈强, 刘洋. 基于FunCode平台的“太空星战”游戏开发与设计[J]. 信息与电脑(理论版), 2019, 2: 124-126.
其他文献
摘 要:测定了烧鸡在油炸期间产生的烟气中PM2.5、甲醛的质量浓度及烟气颗粒物中有害成分3,4-苯并芘、杂环胺类化合物的含量。结果表明:油炸烟气中PM2.5最高检出质量浓度为2440μg/m3,甲醛最高检出质量浓度为0.270mg/m3,分别超过我国空气质量标准中PM2.5二级质量浓度限值(75μg/m3)和大气污染物排放标准中甲醛排放限值(0.20mg/m3)的31.5倍和0.35倍;PM2.5
期刊
摘 要:以首批“1+X”证书中的Web前端开发试点院校三门峡职业技术学院为例,对软件技术专业人才培养现状及存在问题进行分析,与“1+X”证书Web前端开发技能标准对标,重新定位人才培养目标,构建新的人才方案和课程体系,加强教学团队建设,创新教学模式及评价模式,在学历证书与职业技能等级证书互通等方面进行改革和探索。  关键词:“1+X”证书;Web前端;职业教育;软件技术  中图分类号:G710 文
期刊
摘 要: 详细分析了ICA算法和ICA_R算法,并对ICA_R算法在音频去噪的应用中进行改进,通过实验对比证明了改进后的ICA_R算法在对噪声的消减上效果更好。  关键词: 改进的ICA_R;音频识别;音频去噪  中图分类号: TP391 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.08.010  本文著录格式:赵祥坤,石莉,陈志国,等. 改进的ICA
期刊
摘 要: 应用大数据、聚类算法等技术实现高校贫困生认定与管理系统云平台的设计,有利于高校扶贫工作的精准化、理性化、科学化。采用HDFS架构的高校贫困生认定与管理系统云平台,技术难度较低,数据处理效率较高。  关键词: 大数据;贫困生;系统  中图分类号: TP391.4 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.08.011  本文著录格式:郑丽波,
期刊
摘 要: 观察VBL-100虚拟仿真系统在培养应用型口腔医学人才过程中的教学效果,探讨该系统在医学机能学实验教学推广的意义。采用传统实验项目教学模式和传统实验项目+虚拟实验教学模式分别对不同年级口腔医学专业学生讲授和指导医学机能学实验课程,通过课堂教学评价指标、课后作业、期末考核成绩、实验设计成绩及学生满意度等评估方式,比较两种教学模式的教学效果。传统实验项目+虚拟实验教学模式组与传统实验项目教学
期刊
摘 要: 为了实现多管相交时切割线的参数化设计,采用几何法和三维坐标变换的思想,对每一根管表面展开的给出了与其他管相交的展开及相贯线算法的参数公式和开发步骤,开发出了多通管件立体图及圆柱表面展开图的绘图命令;该命令由基于参数化绘图方法的Lisp程序和基本尺寸参数输入实现,同时列出了需要输入的基本尺寸参数。  关键词: 参数化;坐标变换;相贯曲线;算法;多通管件  中图分类号: TP391.41
期刊
摘 要: 隨着科技的日趋发展,智能化产品随处可见,极大地方便了人们的生产生活。在一些综合超市,大型购物商场等一些公共场合,由于人流大,购物的人多,仅靠人工来存储物品速度慢,效率低,是远远不能满足要求的,所以就需要自动存储柜来存取物品,以达到更方便、更快捷的目的。但传统的电子存储柜由于价格等因素,只出现在一些大型超市等场合,在其它公共场合并没有得到广泛的应用。  关键词: 自动存储柜;单片机;随机密
期刊
摘 要: 金属件广泛应用于各行各业,螺纹是金属件之间最常见的连接形式,外螺纹测量是金属件接头加工完成后质量检测的重要内容。目前,大部分外螺纹参数测量方法对于检测设备及检测環境的要求较高,无法在常规环境下进行螺纹测量。本文描述了一种基于单目视觉的三维重建方法,利用标定件对智能手机进行标定后,在常规环境下随时随地就可测量任何物品,提高了测量的便捷性。本文选择螺丝作为测量对象,用智能手机对螺纹外径、螺距
期刊
摘 要: 工业园区用户能源需求种类多样,用能量大,是未来多能互补、能源互联网建设的重要落脚点之一。其中,新建工业园区因产权清晰、责权明确而成为投资方的关注热点。但是,如何合理配置园区供能设施,从而保证在入驻企业用能不确定性的情况下的投资收益,是困扰投资方的一项难题。本文考虑园区三类典型入驻企业用能特征,建立以投资收益最大化为目标的园区“源-储”鲁棒优化配置模型,保证投资收益。首先,基于数据搜集整理
期刊
摘 要: 由于新冠肺炎疫情的影响,高校师生无法开展课堂教学,因此很多学校利用多种互联网+平台积极开展线上教学,互联网+互动教学也成为各大高校信息化教学的主要方式。本科课程“面向对象程序设计B”是针对大三本科生开设,主要侧重于编程基本技能训练和面向对象概念讲授的重点课程。然而在在线教学过程中,教师们会遇到诸如无法面对面高效与学生互动、代码展示不便或复杂概念无法有效解释等问题。因此本论文将重点对互联网
期刊