基于Android的消除类游戏开发_第1页
基于Android的消除类游戏开发_第2页
基于Android的消除类游戏开发_第3页
基于Android的消除类游戏开发_第4页
基于Android的消除类游戏开发_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏理工学院毕业设计说明书(论文) 本科毕业设计(论文) 基于Android的消除类游戏开发学院名称: 计算机工程学院 专 业: 计算机科学与技术 班 级: 11计2S 学 号: 11141218 姓 名: 林 祥 指导教师姓名: 朱洪锦 指导教师职称: 副教授 二一五 年 六 月基于Android的消除类游戏开发摘 要:随着中国近30年的快速发展,手机渐渐地人们生活中的必不可少的消费品,借此机遇手机游戏也迎来了他的春天,手机游戏由以往的贪吃蛇、俄罗斯方块等经典简单的单机小游戏,也渐渐发展了起来,发展出了网络版手游,从单一走向的多元,从简单的玩法到各式各样的玩法,这一过程都是手机游戏发展的变化历程。中国的手机游戏的市场更是不需要多少,那么庞大的手机用户基数,相信在不久的将来能够带动游戏行业往更高的层级发展。项目采用的是目前比较流行的游戏引擎Cocos2d-x ,此游戏引擎是一个开源的游戏引擎,所以它的成长是与广大的开发者是分不开的,是与开发者共同成长起来的,目前它必将适合2D游戏的设计开发,对于3D游戏暂时还不是那么的完善。本设计我是使用cocos2d-x进行项目的编写,编写的项目是当前红极一时的消除类游戏Pop star,选择的VS2013为开发工具,严格严格按照软件工程开发原则,运用面向对象方法,经过详细设计和分析,完成该项目。关键词:Cocos2d-x, 手机游戏,VS2013 ,C+The elimination game development based on AndroidAbstract: With the rapid development of Chinas nearly 30 years, mobile phones gradually indispensable consumer goods in peoples lives , the opportunity also ushered in the spring of his mobile phone game, mobile phone game from the previous snake, Tetris and other classic simple stand-alone game, has gradually developed, the development of a network version of Mobile Games, from single to multiple, from simple gameplay to every kind of gameplay, this process is the changing process of mobile phone game development. China mobile phone game market is not the number of mobile phone users, so a huge base, Believe in the near future can drive the development of game industry to a higher level.This design is the use of the most fire the most popular cocos2d-x game engine, the game engine is an open source game engine, so it is growing with the majority of developers are inseparable, is together with developers to grow, it will for the design and development of 2D game, the 3D game yet not so well.This is my design using cocos2d-x project preparation, preparation of the project is to eliminate the Pop star game the smash hit, choose VS2013 as the development tool, strictly in strict accordance with the software engineering principles, using object oriented method, through detailed design and analysis, the completion of the project. Keywords: cocos2d-x, mobile phone games, VS2013, C+目录引言1第1章 概述2 1.1 手机游戏发展历程6 1.2 手机游戏市场存在的问题7 1.3 手机游戏市场与前景8第2章 可行性分析102.1 技术可行性10 2.1.1 开发工具10 2.1.2 开发环境112.2 操作可行性11第3章 需求分析123.1 用户需求12 3.1.1 安全需求12 3.1.2 成长需求12 3.1.3 探索需求12 3.1.4 交互需求13 3.1.5 审美需求13 3.1.6 尊重需求13 3.1.7 自我实现133.2 功能需求14 3.2.2主要功能需求143.3 性能需求15第4章 概要设计164.1 游戏概述164.2 游戏结构设计 174.3 游戏数据存储18第5章 游戏详细设计195.1 项目的创建255.2 模块概述205.3 游戏美术设计205.4 主要模块设计205.5 算法设计215.6 数值设计245.7 性能优化25第6章 游戏运行与测试266.1 测试描述266.2 游戏测试27结束语29参考文献30致谢31引言 网络游戏产业的繁荣发展,让众多游戏开发商和运营商认识到游戏在网络经济中的巨大利润,所以我做了这么一款游戏。而且该游戏是基于C+编写的可视化项目,C+作为面向对象的编程语言,对于编写一款分模块的游戏来说是再好不过的,在编写该项目的同时,能够让你在优美的画面中提升编程的能力,熟悉面向对象编程特点。该项目结合了数据结构,算法分析与设计,模板的操作,以及其他一些基础知识的综合运用,能够大大提升编程的能力。当今社会互联网的普及与发展产生了许多的新鲜事物,在不断的的提升和改变人们的日常生活。网游游戏的产生和发展是必然的。不过网络游戏中绝大部分的游戏都是小型的休闲游戏其中保卫萝卜就是一种经典的塔防策略类的游戏,它简单好玩易上手,是一款受大众喜欢的游戏,开发这款游戏的目的是为了让人们在紧张的工作、学习之余,带来最大程度的放松。现在的保卫萝卜版本很多,各个社交游戏平台上都可以看得到,它有PC端的,也有移动端的,是一款受大众所喜爱的小游戏,它通过建造塔防来保卫萝卜。纵穿天际,丛林,沙漠等多个冒险主题场景,加之挑战级别的boss模式,让人们在保卫萝卜的过程中体会到游戏的乐趣。第1章 概 述1.1 手机游戏的发展历程显而易见,手机游戏即可以在手机上运行并操作的游戏。伴随着科学技术的迅猛的发展与创新,当前的手机功能也越来越丰富,越来越饱满强大。然而手机游戏显然不是我们印象中的“贪吃蛇”之类的手机游戏,这类游戏画面粗糙,规则相对比较简单易懂,渐渐地发展到了一定的高度并且可以和掌上游戏机相媲美,同时具有很强的娱乐性和沟通性。于是,放下你的耳机,去购买一个智能手机吧,你会渐渐的发现,一款智能手机基本上能够满足日常生活的基本需求。无论你走在路边的人行道上,还是坐在宽敞的公交车里,经常会发现身边的很多人都是低着头握着手机。在这些人中不是在做短信沟通,要不就是在玩手机游戏。随着手机游戏渐渐的开始在全世界风靡起来。同时手机游戏也不同于以往的游戏,它需要既要有意思,又要操作简单。从早期的黑白游戏“贪食蛇”到“俄罗斯方块”再到今天多彩绚丽的游戏大作,无一不让人疯狂着迷。伴随着移动互联网时代的到来,手机除了满足大家发短信、通电话的基本需求外,玩游戏早已成为如今智能手机最重要的功能。手机游戏的设计开发也成为市场的一个热门的就业选择,高昂的收入,刺激的玩法,不断促使着毕业生往这个行业迈进,本设计将展示如何制作一个简单的手机游戏,从而让大家对手机游戏有个全面简单的认识。1.2 手机游戏市场存在的问题1、人才问题手机游戏在中国发展的过程中也存在并且暴露出很多不成熟的地方,当然其中最重要的一块就是游戏开发制作人才的相对比较匮乏,这是我国手机游戏快速发展中存在的一个无法规避的问题。在目前的市场中的手机游戏很大一部分来自于国外,日本、韩国、欧美等地开发研制的游戏几乎占据了中国手机游戏市场80%的游戏市场份额。如果想要在游戏的数量与质量制造领域跟上并超过日本、韩国和欧美,我国手机游戏开发市场就需要注入大量的研发人才,但是优秀的游戏设计人才却很少,同时能在移动网络平台上研发游戏的人才就更加地稀少了。虽然,在目前的市场情况下,手机游戏发行商们已经开始有了强烈的自主开发的想法与意愿,但是边学习边开发的速度远远难以赶上手机网络游戏的发展速度。这也是需要我们在以后发展中需要探索思考的问题之一,如何平衡发展速度与人才的培养。2、 手机终端问题当然,游戏必须需要一个载体,好的游戏同样也需要一部好的手机作为载体,目前由于国内好的手机价格比较贵,许许多多的玩家只能望而却步,很多国产手机还非常耗电,不能够长时间的续航从而对于游戏的体验有了很大的阻碍,而且不同品牌的手机屏幕大小、平台都不统一,这对于游戏开发者来说,如果想得到更多的用户,就必须发布针对每款手机的型号开发相应的游戏,这也是造成游戏开发周期较长的问题之一。同样对于消费者而已,在玩游戏之前,必须要从众多型号游戏中找到合适自己手机的版本,这也致使一些玩家对手机游戏无可奈何。3、网络服务问题在手机游戏的开发和发布过程中必须需要通过网络,在现在的网络环境下的游戏在线稳定性问题,有时可以对用户玩手机游戏时的感受产生影响甚至流失用户。现在的网络对手机游戏的限制还很大的,网络速度限制、网络延时、无法同步数据都是很大的障碍,这些都是造成互动式、回合制联网游戏发展缓慢的主要原因。为了给玩家更多更好的游戏体验,3G手机是必不可少的。手机网络游戏的交互、网络稳定性基本上可以做到PC网络游戏一样的效果。4、下载费用较贵目前,单机手机游戏下载费用大概在58元直接,包月费用大概在200300元之间。由于手机游戏的下载费用比较昂贵,所以消费人群年龄在25至35岁之间的用户居多,他们基本上是具有一定的消费能力的白领们。虽然手机游戏对学生族是很有吸引力的,但是他们较难承受价格和他们对网络流量计费的费用,所以致使他们常常徘徊在手机游戏的门外难以入场 。1.3 手机游戏市场与前景手机游戏的市场是非常庞大的,但是手机游戏的真正崛起也刚刚不久,前几年也是手机游戏真正意义上发展的年份,伴随着移动终端和移动通信网络的不断发展与进步,手机游戏也逐渐从简单化转向复杂化,从全球游戏市场来看,手机娱乐服务被认为是带动移动数据业务快速发展的必不可少的力量,其中,手机游戏作为手机娱乐服务项目的重要内容之一,它的作用也得到了越来越多的体现,近些年来,随着移动网络与终端性能的不断提升与完善,手机游戏业务呈现出一种快速增长的趋势,成为名符其实的“金矿”。随着智能手机的蓬勃发展,我国手机游戏行业近几年发展很快很好,手机游戏的用户群体与规模同样也保持稳步增长的趋势,热裤红利依旧是推动移动手机市场快速发展的核心的动力,将来随着用户群体的饱和放缓,中国手机游戏的市场增长率同样也将逐步下降,从2014年的数据分析来看,手机游戏的用户群体成为国产手机游戏的巨大的增长动力。第2章 可行性分析2.1 技术可行性2.1.1 开发工具1. Visual Studio 2013VS 2013预览版是以VS 2012 和后来的Microsoft Visual Studio 发布更新的版本为基础搭建而成的,可以为团队开发提供需要且可行的解决方案,从而使其接纳这种变化并研发和交付利用下一波Windows 平台创新的新式应用程序,同样能够在几乎所有的 Microsoft 平台中支持多种设备和服务。2. Cocos2d-x游戏引擎Cocos2d-x首先是一个开源的移动研发2D游戏的游戏引擎,这款游戏引擎是在MIT许可证下进行发布的。其中Cocos2d-x是开发C+ 和Cocos2d-iPhone项目的版本。Cocos2d-X发展的重心是根据Cocos2d的跨平台的特性,Cocos2d-x游戏引擎所提供的框架。让手机游戏可以写在C+或者Lua的时候能够使用API使得与Cocos2d-iPhone完全的兼容在一起。同时Cocos2d-x项目也能够很轻松地在iOS,Android,黑莓Blackberry等操作系统中进行运行。当然Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,介于此特性,开发者们编写的源代码很方便的在桌面操作系统中运行和调试。3C+C+是一种使用非常广的计算机程序设计语言。它是一种静态数据类型检查的,支持多范型的通用程序设计语言。C+同样支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。C+是在C语言基础上为支持面向对象程序设计而开发出的一个通用程序设计语言。C+语言开发的宗旨是使面向对象程序设计技术和数据抽象成为软件开发者的一种真正的实用技术。C+在游戏行业更是有着举足轻重的地位,尤其是那些底层的方面,比如脚本语言、数据库、网络等等。因此本次设计以C+为语言基础是最为合适的。2.1.2 开发环境本游戏是运行在Windows模拟器中,通过VS 2013编辑器进行编辑运行,游戏主要使用C+语言来从事游戏开发工作,通过Cocos2d-x游戏引擎的使用来进行游戏的设计。2.2 操作可行性本游戏一款非常容易且简单的消除类游戏,消除类游戏的规则很简单也很容易懂:只要点击两个以及两个以上相同颜色的方块时候可以将其消除。当然为了游戏能够更加的刺激与更具挑战性,所以游戏的每个阶段都设有一个目标,完成目标即可进入下一关进行挑战,否则将结束游戏。简单轻松的治愈系游戏PopStar,可以在我们的每天工作结束时玩一把,看着消除了的星星飞来飞去,确实让人有一种带走疲惫的感觉。游戏虽然想法很简单,但是想要玩出很高的分数还是需要花费不少的时间以及消耗不少脑细胞的,所以PopStar用来开动脑筋打发时间也是一个不错的选择。第3章 需求分析3.1 用户需求3.1.1安全需求1.安全是角色在游戏虚拟世界当中,由于游戏本身PK系统、帐号安全等设计所衍生出来的客观需求。PK是网络游戏系统重要功能,表现为角色与角色,角色与怪物(系统)的PK帐号安全:表现为角色希望自己的所获得虚拟价值得到保护。玩家总是期望能得到系统、角色环境、自身的保护,确保安全,以期望顺利地进入游戏过程,实现成长。2.安全需求具体表现在玩家会选择个人角色成长相关的辅助道具、任务等来实现自我成长,以抵抗各种“危险”因素。3.安全需求是玩家最基本的一个需求。3.1.2成长需求1.成长是角色在游戏虚拟世界当中的客观行为现象,成长一般表现为等级的提升、装备、个人属性等提升。2.玩家总是期望自己由低级状态向高级状态实现成长3.玩家总是希望缩短成长的时间,以便完成个人自我实现。4.玩家成长一般通过自身地探索、动作、任务、行为等游戏系统规则实现。比如打怪,做任务,购买辅助成长道具等方式实现3.1.3探索需求1.探索是角色进入虚拟世界当中一种客观反映。方面角色进行成长并满足自我实现2.探索表现为进入游戏场景,提示、寻路、副本任务场景,新功能新系统尝试与体验,操作等等3.玩家总希望自己能够对于游戏能够有个全面的了解,并获取更多新的知识和技能,所以玩家会不断的体验与尝试。4.玩家希望能够尽快了解和熟悉虚拟世界当中的各种属性,以便完成成长与个人实现。3.1.4交互需求1.人本身是一种社会关系性动物,角色作为人的客观存在自然也会有社会关系性的特征。2.虚拟世界的交互实现是以角色为基本单元对象进行3.交互表现为对话、交友、聊天、组队、公会、帮派、结婚等行为动作。4.玩家期望与世界、玩家、系统之间实现交流和沟通,并有具备社会现实属性5.交互是玩家实现个人成长、自我实现的重要途径3.1.5审美需求1.审美是人类一种基本追求2.虚拟世界审美感表现在:场景,物品,装饰,称呼,荣誉、形象等3.玩家期望在游戏里保持自己独特的个性美感。4.玩家期望在游戏里释放自己的个性5.审美是玩家自我实现的一种客观反映3.1.6尊重需求1.尊重需求是指玩家希望在虚拟世界当中,取得社会地位、荣誉等,从而获得世界的认可。2.尊重需求表现形式:等级排行,财富排行,贡献排行,公会会长,组队首领,特殊物品,道具,AVTAR装饰羡慕感等3.玩家希望在游戏里获得地位,并受到到尊敬3.1.7自我实现1.玩家在游戏里通过个人融入,情感满足与宣泄,目标实现,精神意念等方式表现为自我实现。2.心情,文章,取得特殊物品,获得地位,独特装饰等来获得自我实现。3.自我实现是玩家融入游戏的最高需求3.2 功能需求3.2.1 主系统流程图游戏登陆主界面关于开始游戏游戏设置背景音乐切换、开关背景音乐开关分数面板游戏主场景游戏胜利游戏失败图3.2.1 游戏主流程图3.2.2主要功能需求1. 实现主界面的调用:游戏主界面的实现是一个游戏的基本要求,界面能够体现该游戏的整体设计以及游戏美术设计的核心。在主界面中我们需要有简单的介绍,让大家对本游戏有个直观的了解,还有个Start按钮,从而进行游戏,可以有开关的按钮,进行音效、音量的调节,这些都是必备的功能需求;2. 实现主关卡选择的界面:游戏主解面主要是显示游戏的一个关卡介绍,以及版本号,创作者,以及广告等;3. 实现次关卡选择的界面:游戏次关卡主题都是一样的,该界面主要包括了小关卡的游戏界面、关卡是否胜利、关卡主角以及关卡胜利的等级。4. 实现消除游戏:游戏主要逻辑以及玩法都是在游戏中,主要就是消除,两个及以上的星星进行点击,将会获得很大的分数,这个分数会根据当前的星星数量有个算法来计算当前得分,所以次游戏的核心玩法,就是聚集相同花色的星星越多越好,这样就可以获得很高的分数,从而通过关卡;5. 游戏胜利的界面:游戏胜利之后会给玩家显示通过关卡,并立刻进行下一关卡的游戏,同时显示下一关卡的具体信息,如目标分数等;6. 游戏失败的界面:游戏失败会让你选择是否重新开始,如果选择重新开始,则游戏从第一关重新开始游戏,选择返回,则返回到主界面中,是否返回主界面;7. 游戏暂停的界面:游戏暂停会出现暂停的菜单,让你选择是否重新来,是否继续,还是返回,如果选择重新开始,则游戏从第一关重新开始游戏,选择返回,则返回到主界面中。3.3 性能需求1.实现消除类游戏的点击消除功能。2.能实现关卡的正常交替,判断游戏是否结束。3.保证画面的美观、和谐、有吸引力。4.保证动画的流畅运行。5.减少玩家的等待时间。第4章 概要设计4.1 游戏概述PopStar一款非常容易且规则简单的消除类游戏,游戏的规则很简单:只需点击两个以及两个以上颜色相同的方块即可消除。虽然游戏没有时间限制,但是在游戏的每个阶段都设有一个目标,完成即可进入下一关。否则,游戏结束。4.2 游戏结构设计游戏设计的总体设计表现在三点,一点是玩家的具体操作,二是设计的游戏逻辑,三是游戏与玩家的互动。玩家的具体操作:点击星星所在的位置,在游戏过程中,星星会随着玩家的点击从而会产生消除的效果,当然必须2个及两个以上的星星数量在一起的时候才能进行消除,消除后会有个特效,同样,此特效是根据消灭的星星数量所决定的,星星数量大于3个就会出现赞,星星数量大于7个就会出现牛逼特效,星星数量大于10个就会出现棒极了的特效;玩家还可以点击主界面上的按钮也会出现不同的特效,不停的按钮也会产生不停的反馈,这些都是玩家可以主动并且具体的进行点击操作的。游戏的逻辑:玩家的主要任务就是尽可能的消灭星星,获取最大化的分数,达到上面的目标分数就为通过本关卡,否则,游戏失败,这不是简单的随便的消除,也是存在一定的技巧的,得分的算法也是一个很大的逻辑点,分数通过消灭的星星的数量来控制的,这也是一个游戏的特色,消灭的星星数量越多,得到的分数将会越高,因为这个成几何比例增长的,所以玩家在这块为了得到更高的分数,必须尽可能的聚集更多的星星在一起从而获得更高的分数。玩家的互动:在游戏中,玩家可以在主界面点击不同的按钮,从而获得不同的游戏反馈,玩家还可以查看游戏的最高分是多少,这是一个很大的挑战,也是给玩家一个真实的互动。4.3 游戏数据存储由于本游戏数据存储较少,所以此只运用到了cocos游戏引擎自带的一个数据存储累UserDefault类,由于此类只能存储简单的数据,所以如存储较大的数据仍需SQL比较合适;UserDefault类:UserDefault采用XML存储技术,就是一般的键值对,这个类似C+中的Map的映射(键值)。一个关键字对应一个值。其实现的接口也比较简单实用,通过传统的set()、get()方法访问和修改值。它支持五种数据:bool、int、float、double、string。1、原理(1)类似map的映射(键值)。一个关键字对应一个值,并利用set()/get()进行访问。(2)数据直接存储在一个XML文件中,并且文件名为程序项目的名字,如“MyTest.xml”。(3)首次使用时,XML不存在,CCUserDefault会自动创建相应的XML文件。2、设置数据值set通过(键值)的方式进行设置。/voidsetBoolForKey(constchar*pKey,boolvalue);/设置一个bool值voidsetIntegerForKey(constchar*pKey,intvalue);/设置一个int值voidsetFloatForKey(constchar*pKey,floatvalue);/设置一个float值voidsetDoubleForKey(constchar*pKey,doublevalue); /设置一个double值voidsetStringForKey(constchar*pKey,conststd:string&value); /设置一个string值/3、获取数据值get通过关键字,来从XML文件中获取数据值。若关键字不存在,会自动设置(键值)映射,并设置对应的默认值defaultValue。/boolgetBoolForKey(constchar*pKey,booldefaultValue=false);/读取一个bool值intgetIntegerForKey(constchar*pKey,intdefaultValue=0);/读取一个int值floatgetFloatForKey(constchar*pKey,floatdefaultValue=0.0);/读取一个float值doublegetDoubleForKey(constchar*pKey,doubledefaultValue=0.0);/读取一个double值std:stringgetStringForKey(constchar*pKey,conststd:string&defaultValue=); /读取一个string值/4、保存flush当set完后,数据不会马上保存到XML文件中。所以一定要记得用flush()来保存数据,否则会丢失!/CCUserDefault:sharedUserDefault()-flush();/第5章 手机游戏详细设计5.1 项目的创建5.1.1 项目的创建图5.1.1.1 创建项目图打开cmd输入cocos new MyGame -p cn.am -l cpp -d F:/workspace说明:MyGame是项目名-p : 包名-l :语言(cpp是指c+)-d :项目生成路径生成成功会在目录下生成必要的文件(下图):包括classes 文件存放代码.cpp和.hResource 文件存放图片、音乐等资源文件以及各个平台的文件:Windows 、Android 、mac 必须的支持文件图5.1.1.2 一级文件在本项目中,我们使用到的是在Windows平台下进行编程,所以我们进入Pro.win32文件中(如下图):图5.1.1.3 pro.win32文件这些很多都是配置的文件,我们这里打开FirsGame.sln 来启动项目:图5.1.1.4 VS主界面这样我们就进入了项目代码编写环境VS2013在这里进行代码编写以及项目的运行。5.1.2 项目在VS中的结构介绍首先我们看看左边一栏(如下图):在这一栏中,我们可以看到整个项目的一些配置文件Classes是存放代码的;Resource 是存放资源的;以及一些外部的依赖文件;图5.1.2.1 VS左侧栏其次我们可以看看上面一栏的工具栏图5.1.2.2 VS工具栏这里我们主要使用到的就是这个按钮,这就是我们项目启动的按键,当项目编写到一定程度,就可以点击此按钮进行编译,进行游戏的运行和显示,当然这也是有一定的前提,就是项目不能够存在运行性错误,导致代码崩溃;最后我们可以看下下方一栏的日志输出栏:这一栏对于我们代码的编写非常重要,我们可以通过此日志栏,可以看到代码运行到哪一步,也可以看到游戏进行到哪一步,可以根据日志的输出来判断游戏运行是否正常;图5.1.2.3 VS日志输出栏5.2 模块概述在该游戏当中,主要涉及了以下几个模块,游戏主场景模块、星星模块、特效模块、飘字模块、游戏胜利、游戏失败等等;总体我分为了三大块:Entity layer UtilEntity : 星星模块、特效模块、飘字模块Layer : TopMenu 、Setting 、MenuScene 、 GameSceneUtil : 音效音乐模块 、 中文显示模块 、数据存储模块下面是模块结构示意图PopStar总类游戏管理游戏关于游戏设置开始游戏 图 5.2.1 总流程图GameScene.cppMenuScene.cppAppDeleGate.cppSetting.cppGameLayer.cppTopMenu.cppcomboEffect.cppFloatWord.cppStar.cppStarMatarix.cpp图5.2.2 项目文件流程图5.3 游戏美术设计 UI即User Interface(用户界面)的简称。UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品位,还要让软件的操作变得舒适简单、自由,充分体现软件的定位和特点。 该游戏界面处处体现了UI,按钮,星星的UI,背景UI。下面展示了一些UI的实例图: 图5.3.1 图片资源特效UI也是必不可少的一部分,特效给我们的游戏添加了很多的乐趣,让我们游戏的画面和质量提升了一个档次,同时也给玩家一个很好很刺激的画面效果,下面我们展示出几张特效UI: 图5.3.2 特效图片5.4 主要模块设计5.4.1 主场景的设计1、首先就是场景参数设置以及游戏入口APPDelegate.cpp:/by lin 背景图片是480*800glview-setDesignResolutionSize(480,800,ResolutionPolicy:EXACT_FIT);这里就是进行整个游戏框架大小的设定,从而决定整个游戏后续的UI制作;director-setDisplayStats(false);这个是设定是否显示游戏运行帧的情况,会出现在游戏的左下角;设置true为显示,false为关闭;auto scene = MenuScene:createScene();director-runWithScene(scene);这两句代码就是游戏启动到我们自己创建的游戏中去,首先就是进入我们的主场景中MenuScene.cpp中;2、进入MenuScene.cpp主场景中,在主场景中添加了开始的按钮,以及设置按钮和关键的按钮,以及个人制作的一个LOGO,为了添加游戏的乐趣,将Logo设置成可点击响应的状态;(效果如下图)图5.4.1.1主界面5.4.2 音乐模块设计在项目中单独设计了一个类来管理音乐的播放即Audio.cpp,在Audio也是一个单例类,即在其他的类中,可以随时调用此音乐类来进行音乐的播放、关闭、切换等。什么是单例呢?单例:单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。(如下图)图5.4.1.2 单例代码音乐如何加载?图5.4.1.3 音乐加载代码在Audio类中定义prepare函数,来进行音乐的预加载,当然这里只是创建,将所有需要用到的音乐进行加载,但是仅仅这样加载就行了吗?当然是不行的,还需要对该函数进行调用,这里需要在项目刚刚启动的时候就需要对音乐等进行加载!在APPDeleGate中进行调用。(如下图)图5.4.1.4 音乐单例加载5.4.3 中文转码乱码的产生VS下中文不是UFT8编码的,虽然文件是UTF8,但是cocos2dx只支持UTF8,所以就会出现乱码问题,在Windows下需要我们进行乱码转换,但是编译之后再Android下便不会出现乱码问题。乱码问题的解决在项目中定义了一个中文转换函数 ChineseWord(const char* wordId),通过配置文件来找到对应的中文,类似于字典查询,通过拼音来找到对应的英文:(如下图)图 5.4.3.1 中文转换XML5.4.4 星星的创建及地图的创建在星星大地图之前,首先说星星的创建,星星也是一个独立的类Star.cpp,星星的参数也有很多,首先通过枚举来随机它的颜色:图5.4.4.1 枚举类型还有设定星星的长度、宽度、下落的时间间隔等;图5.4.4.2 星星矩阵图其次是大地图的创建。在项目中设置了一个Node专门设置一个矩阵来存放星星数列,共有十行十列,所以这边使用了两个for循环来进行排列,随机产生出的星星随机放入这十行十列中,所以对于游戏的随机性也大大的提高了,从而让玩家有不同思路与想法进行游戏获得高分。图5.4.4.3 星星矩阵代码5.5 算法设计5.5.1 算法理论分析游戏中运用到的算法不是很多,主要的算法运用就是星星模块了;那么星星数组的消灭运用到了什么算法呢?下面就让我们一起走近广度优先遍历。在项目中我们要获得点击星星的颜色以及周围相同星星的位置,颜色,个数,那么我们如何在一个二维数组里获得这些我们想要的参数,数值呢;下面我们来看下广先遍历的简介:5.5.2 广先遍历的简介:广度优先遍历:广度优先遍历是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。基本思想: (1)从图中某个顶点V0出发,并访问此顶点; (2)从V0出发,访问V0的各个未曾访问的邻接点W1,W2,,Wk;然后,依次从W1,W2,Wk出发访问各自未被访问的邻接点; (3)重复步骤2,直到全部顶点都被访问为止。5.5.3 算法具体实现那么在我们的项目中我们是如何运用到的呢?得到一串连接星星的算法思路,这里使用了广度优先遍历,并且用了一个队列来辅助具体步骤如下:1.把被点击的星星放进遍历队列;2.分别对遍历队列里面的元素进行如下操作: 1) 把元素放进准备删除的列表; 2)查询上方是否有相同颜色的星星,如果有,把上方的星星放进遍历队列; 3)查询下方是否有相同颜色的星星,如果有,把下方的星星放进遍历队列; 4)查询左边是否有相同颜色的星星,如果有,把左边的星星放进遍历队列; 5)查询右边是否有相同颜色的星星,如果有,把右边的星星放进遍历队列;3. 遍历队列队头出列,得到新的队头。4.重复步骤2;代码如下:voidStarMatrix:genSelectedList(Star*s)selectedList.clear();/记得每次点击都要先把待删除列表清空dequetravelList;/遍历队列travelList.push_back(s);/把点击的星星放进遍历队列deque:iteratorit;for(it=travelList.begin();it!=travelList.end();)/当遍历队列为空的时候停止Star*star=*it;Star*linkStar=nullptr;intindex_i=star-getIndexI();intindex_j=star-getIndexJ();/上if(index_i-1=0&(linkStar=starsindex_i-1index_j)/判断是否数组越界if(!linkStar-isSelected()&linkStar-getColor()=star-getColor()/判断是否已经被纳入选择队列并且与遍历队列的星星颜色一样travelList.push_back(starsindex_i-1index_j);/如果没有被纳入选择队列,并且颜色一样就加入遍历队列/下if(index_i+1isSelected()&linkStar-getColor()=star-getColor()travelList.push_back(starsindex_i+1index_j);/左if(index_j-1=0&(linkStar=starsindex_iindex_j-1)if(!linkStar-isSelected()&linkStar-getColor()=star-getColor()travelList.push_back(starsindex_iindex_j-1);/右if(index_j+1isSelected()&linkStar-getColor()=star-getColor()travelList.push_back(starsindex_iindex_j+1);if(!star-isSelected()/处理当前的星星star-setSelected(true);/设置已经被加入到选择队列(待删除队列)selectedList.push_back(star);/加入到选择队列(待删除队列)travelList.pop_front();/队头出队it=travelList.begin();/得到新的队头5.6 数值设计5.6.1 数值介绍游戏中数值的设计只有消灭星星获得的分数,由于消灭星星的游戏玩法的特殊性,越多的星星得到的分数将是几何增加的,所以我们在设计数值的时候也要考虑到星星的数量,根据星星的数量从而来确定获得的分数多少。5.6.2 项目数值设计在项目中,我们设计了一个GameData类,对数值进行设计控制,同样在这个类里面,也单独设定了一个函数getScoreByLevel,此函数根据参数即等级来计算获得分数,同时将得到的值返回,让其他的设定进行显示!从而达到我们想要的效果!intGAMEDATA:getScoreByLevel(intlevel)intscore=0;if(level=1)score=1000;elseif(level=2)score=3000;elseif(level=3)&(level=10)score=3000+3000*(level-2);elsescore=27000+4000*(level-10);returnscore;5.7 性能设计5.7.1 内存优化1、内存的优化内存的优化,首先要知道是什么占据了程序的内存,可优化的主要是两部分:数据和资源。数据,做短连接的游戏客户端有两种处理数据的方式:一种是傻瓜式客户端,另一种是缓存式客户端,傻瓜客户端几乎可以做到0数据,因为他每个界面只是负责展示,当然,这个界面需要的数据是会存在客户端的,但是他对内存的占据是可以忽略的,基本也是不可优化的,除非你有内存泄露。另一种是客户端会负责一些逻辑,它不仅有缓存的用户数据,还有配置数据,这些数据的大小有时甚至要超出你的想象;资源,主要是图和声音,这类基本上就是美术方面以及后期出包时候的资源压缩的环节可以进行优化。2.在项目中的具体优化在APPdelegate.cpp中将音乐提前导入进行预加载处理,第6章 游戏运行与测试6.1 测试描述系统测试是游戏的必不可少的重要的组成部分。游戏测试在开发周期里横跨两个阶段。通常在程序编写出每个模块之后就需要对其进行必要的测试。测试的目的与其它阶段的目的相反。测试的目的就是为了发现错误与不足。通常来说,测试工作不是由编写程序本人进行,一般由专门的人员对它进行测试。本系统采用黑盒子法进行测试。软件测试过程一般分成以下几个步骤:模块测试:保证游戏的每个模块作为一个单元能够独立的运行,所以模块测试也被称为单元测试。在此测试过程中发现的往往是编码和详细设计的错误。子系统测试:把之前单元测试的模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论