计算机类论文_第1页
计算机类论文_第2页
计算机类论文_第3页
计算机类论文_第4页
计算机类论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、唐山师范学院本科毕业论文 题 目 基于Android系统的桌球桌球游戏的设计与实现 学 生 杨景岗指导教师 闫敬 副教授年 级 2010本科班专 业 计算机科学与技术系 别 计算机科学系唐山师范学院计算机科学系2014年5月郑重声明本人的毕业论文(设计)是在指导教师 闫敬 的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。毕业论文(设计)作者(签名):年 月 日目 录标 题1摘 要2一.前言2 1.1桌球游戏开发目的2 1.2桌球游戏的背景2 1.3桌球游戏的开发技术与环境

2、2二.桌球游戏的需求分析22.1 桌球游戏的策划22.2 安卓平台下桌球游戏开发的准备工作2三.桌球游戏的设计33.1 桌球游戏框架简介33.2各个类的简要介绍43.2.1. 界面相关类43.2.2. 辅助类53.2.3. 常量头文件53.2.4. 其他类及源程序5四.桌球游戏的实现54.1.界面相关类54.1.1界面管理类SceneManager.64.1.2菜单界面类MenuLayer64.1.3关于界面类AboutLayer74.1.4帮助界面类HelpLayer84.1.5声音设置类MusicLayer84.1.6桌球游戏模式选择界面类ChoiceLayer104.1.7分数查看界面类

3、ScoreLayer104.1.8桌球游戏界面类GameLayer114.2. 辅助类114.2.1桌球精灵辅助类TableBall114.2.2刚体碰撞回调类MyContactListener124.3 其他类及源程序134.3.1主程序main134.3.2 场景创建类AppDelegate144.4桌球游戏界面展示16五. 结束语18参考文献18致 谢20外 文21 基于Android系统的桌球桌球游戏的设计与实现杨景岗 摘 要 随着安卓平台上休闲类小桌球游戏变得越来越丰富,休闲类桌球小桌球游戏也变得日渐流行,这类桌球游戏不仅操作简单而且富有一定的技术难度,经常受到桌球游戏爱好者的追捧,

4、因此,我们将开发一款基于Android平台的体育类桌球游戏2D桌球(Billiard_2D).本桌球游戏是一款使用cocos2d-x与Box2d相结合进行图像渲染的Android平台的休闲类桌球小桌球游戏,本桌球游戏是基于c+语言开发利用了cocos2d-x中的大量的特效,极大的丰富了桌球游戏的视觉效果,增强了用户体验,同时本桌球游戏中的物理模拟用到了cocos2d-x提供的Box2d物理引擎,桌球运动十分真实,酷炫。 关键词 安卓 cocos2d-x Box2d 桌球游戏 追捧 一.前言 1.1桌球游戏开发目的 随着Android手机的不断发展,城市化发展越来越快,竞争也越来越大,一款休闲,

5、益智的小桌球游戏已成为当今时代人们缓解压力的不二选择,功能也不断的多样化,而概要设计正是体现出2D桌球的基本概念。学习安卓已经有了一段时间,在不断的学习与开发过程中,对Android开发平台也有了基本的认识。阅读了一些相关资料之后,便开始了基于Android桌球游戏开发的项目2D桌球,以此来完成这款桌球游戏。 1.2桌球游戏的背景近年来社会生活节奏不断加快,人们往往没有过多的时间来玩一款大型的桌球游戏,相反越来越多的人们更加倾向于一些休闲类的小桌球游戏,比如现在比较流行的的休闲类桌球桌球游戏“3D桌球”, “美式2D桌球”, 因为其画面丰富精美,桌球游戏可玩性高,在用户中受到了热捧。1.3桌球

6、游戏的开发技术与环境Android的兴起大大扩大了移动终端的游戏市场,也由此产生了一个迫切的需求,即游戏开发需要同时部署在两个热门平台上,但是为一个游戏维护两套代码的代价是非常昂贵的,尤其是在两个平台的主流语言,主流引擎还不统一的情况下。因此,基于c+语言,以cocos2diPhone为基础开发的Cocos2dx出现了,桌球游戏就是在这样一个平台上产生的,并且此游戏在Eclipse编译器下编译而成的。 二.桌球游戏的需求分析 桌球游戏开发的前期准备工作,主要包含桌球游戏的策划和桌球游戏中资源的准备。 2.1 桌球游戏的策划 桌球游戏的策划主要包含:桌球游戏类型定位、呈现技术以及目标平台的确定等

7、工作。 (1)桌球游戏类型 该桌球游戏的操作为触屏,通过点击屏幕右下角的“Go”按钮,击打母球,通过触控改变母球击球的方向,通过改变力度条的高度,改变击打母球的力度,属于休闲类桌球游戏。 (2)运行目标平台 桌球游戏目标平台为Android2.2及以上版本。桌球游戏中运用了大量的cocos2d-x中的粒子系统,CPU运算速度较慢的设备运行桌球游戏时桌球游戏效果会比较差。 (3)操作方式 桌球游戏所有关于桌球游戏的操作为触屏,玩家可以操纵球杆的方位,球杆击打母球的力度,通过将一种球全部打入洞中,最后将黑八打入洞中从而取得桌球游戏的胜利。 (4)呈现技术 桌球游戏完全采用cocos2d-x引擎进行

8、桌球游戏场景的搭建和桌球游戏特效的处理,比如桌球游戏中的进洞效果、各个界面之间多变的切换效果,用Box2d引擎进行物理的碰撞模拟,比如球之间的碰撞,球与边界之间的碰撞等,这些功能是cocos2d-x中所独有的,用起来简单方便,但所呈现的效果却非常强大,cocos2d-x的这种方便高效的特点,极大地增强了玩家的桌球游戏体验。 2.2 安卓平台下桌球游戏开发的准备工作 进行开发前的准备工作,包括搜集和制作图片、声音等,其详细开发步骤如下。 (1)首先为读者介绍的是本桌球游戏中用到的图片资源,系统将所有图片资源都放在项目文件下的Resources/pic文件夹下,如表1-1所列。表2-1 图片清单图

9、 片 名大小(KB)像素(wxh)用 途about.png83504*299关于图片aim_down.png6.2666*51模式切换按钮aim_up.png6.7351*56模式切换按钮ball00.png ball152.png4.3224*24桌球图片bg1.png138800*480背景图片1bg2.png119610*407背景图片2bg3.png105600*400背景图片3bmp.png71.6500*300排行榜背景图片breakmark.png3.0791*91Go按钮图片choice0.pngchoice2.png8.5991*91Go按钮图片go_normal.png5.

10、89189*50选中桌球游戏按钮go_select.png81.2500*300装饰背景help1.png141800*480帮助图片1Help2.png12319*56帮助图片2left_normal.png5.99103*59左微调按钮图片left_select.png5.88103*59选择左微调按钮图片line.png6.17855*2线图片lineBall.png3.7424*24线球图片lose.png52.7350*88失败字样图片menu_background.png280800*480菜单界面背景图片menu0.png menu4.png35.5200*161菜单界面按钮图片

11、number0.png number10.png36.720*32时间数组组合图片off.png8.01110*80关闭开关on.png7.94110*80打开开关pointer.png3.2830*30指针图片right_normal.png6.07103*60右微调按钮图片right_select.png5.99103*60选中右微调按钮图片ruler.png7.32100*230能量条图片ruler_inner.png6.0740*220能量条内部图片score_back1.png289800*480分数背景1score_back2.png222800*480分数背景2stars.png

12、1.0532*32粒子系统图片subline_down.png6.2966*51辅助线按钮图片subline_up.png3.3266*51选中辅助线按钮图片tableCue.png8.15341*13台球图片vector.png49.6350*88胜利字样图片yinxiaoguan .png273*8027.1音效关图片yinxiaokai.png273*8026.1音效开图片yinyueguan.png273*8025.9音乐关图片yinyuekai.png273*8024.8音乐开图片 (2)接下来介绍桌球游戏中用到的声音资源,系统将声音资源放在项目目录中的Resources/sound

13、文件夹下,其详细情况如表1-2所列。表2-2 声音清单声音文件名大小(KB)格 式用 途backsound.mp31249.28mp3桌球游戏的背景音乐ballin.mp336.3mp3桌球进洞音效fire.mp349.3mp3爆炸的音效gameover.mp389.4mp3失败音效hit.mp335.1mp3桌球之间的碰撞音效shoot.mp333.8mp3球杆击打母球音效win.mp3112mp3桌球游戏胜利音效 (3)最后介绍桌球游戏中用到的pList文件,系统将List资源放在项目目录中的Resources/pic文件夹下,其详细情况如表1-3所列。表2-3 粒子系统文件清单粒子系统文

14、件名大小(KB)格 式用 途ExplodingRing.plist9.2plist失败界面粒子特效 三.桌球游戏的设计桌球游戏的架构包括界面相关类、辅助类、常量头文件、桌球游戏控制类和工具类等。 3.1 桌球游戏框架简介 桌球游戏的整体架构介绍,桌球游戏框架如图1-13和图1-14所示。图3-1桌球游戏框架图说明:图1-13中列出的为主程序、场景创建类、以及桌球游戏界面类,其各自功能以及具体实现将在后续详细介绍,读者这里不必深究。图1-14是桌球游戏开发中用到的辅助类、常量头文件,辅助类主要用于创建桌球以及进行刚体碰撞时的处理,常量头文件用于存储桌球游戏需要的一些常量。图3-2 辅助类、常量头

15、文件 按照程序运行的顺序逐步介绍各个类的作用以及整体的运行框架. (1)启动桌球游戏,首先通过main入口进入整个程序的,然后进入第一个场景菜单场景界面MenuLayer,在该界面上主要有5个按钮从左到右依次为“关于“按钮,“帮助“按钮,“开始桌球游戏“按钮,“设置“按钮,“退出“按钮,通过触屏滑动操作能使按钮左右移动,点击相应的按钮会执行相应的操作。 (2)点击“关于”按钮后进入关于界面,该界面主要负责介绍此桌球游戏的名称,版本号,版权所有者等,点通过击手机的“返回键“按钮能够返回到主菜单界面。 (3)点击“帮助”按钮后进入帮助界面,该界面主要负责介绍此桌球游戏的玩法,通过控制球杆的方向与力

16、的大小将同类桌球击打进洞,同时介绍了桌球游戏的微调按钮,模式转换按钮,辅助线按钮等。 (4)点击“开始桌球游戏”按钮后进入桌球游戏模式选择界面。 (5)点击桌球游戏选择模式界面的“计时模式”按钮后进入桌球游戏为倒计时模式,点击“练习模式”按钮后进入桌球游戏为练习模式,点击“排行榜”按钮后进入得分界面,该界面显示的是玩家在计时模式中取得胜利的日期、分数等,通过触屏的上下滑动控制记录的滑动,方便玩家查看历史记录。 (6)在菜单界面点击“设置“按钮,会跳转到声音设置界面MusicLayer,该界面主要是进行桌球游戏过程中的背景音乐与音效播放标志位的设置,点击手机的返回键按钮返回菜单界面。 (7)在菜

17、单界面点击“退出“按钮,退出整个应用程序。 3.2各个类的简要介绍3.2.1. 界面相关类(1)界面管理类SceneManager 该类为桌球游戏程序中管理各个界面的类,主要负责创建并规定第一个界面,然后实现从当前界面跳转到其他界面的方法,所以界面管理类是coco2d-x程序中必须有的一个类。(2)菜单界面类MenuLayer 该类为菜单界面类,从左到右依次为“关于“按钮,“帮助“按钮,“开始桌球游戏“按钮,“设置“按钮,“退出“按钮,通过触屏滑动操作能使按钮左右 移动,点击相应的按钮会执行相应的操作。(3)关于界面类AboutLayer 该类为关于界面类,该界面主要负责介绍此桌球游戏的名称,

18、版本号,版权所有者等,通过点击手机的“返回键“按钮能够返回到主菜单界面。(4)帮助界面类HelpLayer 该类为帮助界面类,该界面主要负责介绍此桌球游戏的玩法,通过控制球杆的方向与力的大小将同类桌球击打进洞,同时介绍了桌球游戏的微调按钮,模式转换按钮,辅助线按钮等。(5)声音设置类MusicLayer 该类为声音设置界面类,该界面主要负责设置桌球游戏过程中背景音乐与音效的播放,该层为MenuLayer的子层,共有4个按钮,为“off“按钮与”on“按钮,通过点击声音控制按钮开关,控制声音播放。(7)桌球游戏模式选择类ChoiceLayer 该类为桌球游戏模式选择类,该界面有3个按钮,点击“计

19、时模式“按钮,进入计时模式,点击”练习模式“按钮,进入练习模式,点击”排行榜“按钮,进入分数查看界面。(8)分数查看界面类ScoreLayer 该类为分数查看界面,该界面主要记录玩家在计时模式胜利时的时间与分数,通过上下滑动能够让历史记录精灵上下滑动,方便玩家查看历史记录。(9)桌球游戏界面类GameLayer 该类为桌球游戏界面类,实现了主桌球游戏场景的搭建,桌球游戏中所有的精灵对象都添加到该层之上,并进行显示,玩家通过触控对球杆进行操作,通过点击按钮击打白色桌球。3.2.2. 辅助类(1)桌球类TableBall 该类为桌球类,主要负责创建桌球,初始化桌球的索引号,桌球的图片等,并实现了根

20、据桌球速度不断为桌球换纹理图的功能,与检测是否需要删除桌球,播放进洞特效的方法。(2)刚体碰撞回调类MyContactListener 该类为刚体碰撞回调类,主要负责进行刚体之间碰撞的处理,在创建物理世界的时候为物理世界加上此监听,刚体碰撞的时候就会调用此类中重写的父类方法,主要是进行音效播放的处理。3.2.3. 常量头文件主要介绍本桌球游戏的中用到的一些常量,这些常量都存储在相关的头文件中桌球游戏的常量头文件AppMacros,该头文件中定义并创建了图片、个体,定义了程序的标准分辨率和场景中一些精灵的层次。桌球游戏的第二个常量头文件JNIUtil,在该头文件进行数据信息的存储,与取出。桌球游

21、戏的第三个常量头文件GameInfo,在该头文件进行桌球游戏中一些常用数据的定义,例如球台的位置等个点构成封闭的线段,menuItemPosition为MenuLayer界面5个按钮的坐标信息。 说明:将桌球游戏中桌球,球台等的位置信息放入头文件中,方便管理,提高了程序的可维护性。如果以后用到关卡设计器的话,也可以直接利用这些数据进行关卡设计,简洁方便。 (1)头文件AppMacros 该头文件中定义并创建了图片、声音套装的结构体,并定义了程序的标准分辨率和场景中一些精灵的层次,声明了桌球游戏中经常用到的常量。(2)头文件JNIUtil 该头文件的主要作用是通过JNI与java端sdk的pre

22、ference相连,将一些简单数据存储,并在需要的时候取出存储在editor中的数据,主要存储背景音乐与音效播放的标志,与分数、日期等。(3)头文件GameInfo 该头文件中定义了桌球的半径,整个物理世界与绘制的缩放比,球台的长与宽,母球的初始位置,能量条的位置,按钮的位置,指针的位置以及边界的24个点坐标等。3.2.4. 其他类及源程序(1)主程序main 该主程序为程序的入口,当程序运行时会从此进入,然后执行cocos2d-x程序。(2)场景创建类AppDelegate 该类为场景创建类,主要负责创建桌球游戏场景的导演并初始化第一个场景,然后加载桌球游戏用到的所用声音资源,并实现程序进入

23、前台或者后台时的回调方法。 四.桌球游戏的实现 4.1.界面相关类 桌球游戏的界面相关类,首先是桌球游戏界面的管理者,然后是桌球游戏的各个界面是如何开发的,从而逐步完成对桌球游戏界面的开发,下面就对这些类的开发进行详细的介绍。 4.1.1界面管理类SceneManager. 桌球游戏的界面管理者SceneManager类,该类的主要作用是管理各个界面,然后创建第一个界面,并实现从当前界面跳转到其他界面的方法,其类具体的开发步骤如下。 (1)首先给出的是SceneManager类的头文件代码,该头文件中声明了本类中所需要的方法和各个场景的指针,其详细代码如下。1#ifndef _SceneMan

24、ager_H_2 #define _SceneManager_H_3#include cocos2d.h4using namespace cocos2d;/使用命名空间5class SceneManager6public:7 cocos2d:CCScene* createScene(); /创建第一个对象的方法8CCScene *menuScene; /菜单场景的引用9CCScene *gameScene; /桌球游戏对象的引用10void goMenuLayer(); /创建场景对象的方法11void goGameLayer(bool isdaojishi); /去桌球游戏界面的方法12;1

25、3#endif说明:上述代码为SceneManager类的头文件,在该头文件中声明了桌球游戏中所有界面的指针,并声明了创建桌球游戏第一个场景的方法和切换到其它界面的方法。 (2)然后给出的是SceneManager类的具体代码,在该类中实现了创建第一个场景的方法和切换,具体实现步骤请查看SceneManager.cpp. 4.1.2菜单界面类MenuLayer 桌球游戏的的菜单界面,该界面中有五个按钮,玩家通过点击屏幕中不同功能的按钮实现不同的界面的切换以及桌球游戏的退出。 (1)首先是MenuLayer类的头文件代码,该头文件声明了本类需要的按钮、精灵、指针、变量和按钮的回调方法,其详细代码

26、在MenuLayer.h.1#ifndef _MenuLayer_H_2#define _MenuLayer_H_3#include cocos2d.h/引入头文件4#include SceneManager.h/引入头文件5using namespace cocos2d;/使用命名空间6class MenuLayer : public CCLayer7public:8virtual bool init();/初始化的方法9virtual void keyBackClicked(); /返回键监听的回调方法10virtual void registerWithTouchDispatcher(v

27、oid);/触控的注册回调方法11/从父类继承来的触控按下的方法12virtual bool ccTouchBegan(cocos2d:CCTouch *pTouch, cocos2d:CCEvent *pEvent);13/从父类继承来的触控移动的方法14virtual void ccTouchMoved(cocos2d:CCTouch *pTouch, cocos2d:CCEvent *pEvent);15/从父类继承来的触控结束的方法16virtual void ccTouchEnded(cocos2d:CCTouch *pTouch, cocos2d:CCEvent *pEvent);

28、17/从父类继承来的触控取消的方法18virtual void ccTouchCancelled(cocos2d:CCTouch *pTouch,cocos2d:CCEvent *pEvent);19CREATE_FUNC(MenuLayer);/资源的释放20public:21void initButton();/初始化按钮的方法22void aboutCallback(CCObject* pSender);/关于按钮的回调方法23void helpCallback(CCObject* pSender);/帮助按钮的回调方法24void startCallback(CCObject* pSe

29、nder); /开始桌球游戏按钮的回调方法25void setCallback(CCObject* pSender); /音效设置按钮的回调方法26void exitCallback(CCObject* pSender);/退出按钮的回调方法27void recoverSet(CCObject* pSender);/恢复设置28public:29float distance_X; /x移动距离30int index;/当前是第几个按钮31int menuCount;/按钮数组大小32SceneManager* bsm;/场景管理器33CCSize visibleSize;/获取可见区域尺寸34

30、CCPoint origin;/获取可见区域原点坐标35CCPoint startPoint;/记录起始点击的点36 cocos2d:CCMenu* pMenu;/菜单按钮37 cocos2d: CCMenuItemImage* nMenu; /当前选中的按钮38 CCArray *menuArray; /按钮列表39;40#endif 说明:第818行依次为初始化的方法、返回键监听的回调方法以及重写的父类的与触控相的代码,第2127行依次为初始化按钮的方法,以及菜单界面按钮的回调方法。第2840行依次为,x方向移动距离、当前按钮选项,按钮数组大小、场景管理器、可见区域尺寸、原点坐标、起始点点

31、击点坐标、菜单按钮,当前选中按钮、按钮列表等变量的声明。 (2)MenuLayer类的具体代码,在该类中创建了背景和所有的按钮,并为其设置了出场特效、然后实现了所有按钮的回调方法,首先要介绍的是本类的第一部分init方法,此方法用于初始化布景、常用变量、按钮和一些相关资源,请查看MenuLayer.cpp。 4.1.3关于界面类AboutLayer 桌球游戏的关于界面,该界面用于介绍桌球游戏名称、版本号以及版权所有者,该界面开发起来比较简单,其具体的开发步骤如下。 (1)首先是AboutLayer类的头文件代码,其主要定义了回调方法,按钮,场景管理器的引用,可见区域大小,可见区域原点坐标,以

32、及背景精灵,其详细代码AboutLayer.h。1#ifndef _AboutLayer_H_2#define _AboutLayer_H_3#include cocos2d.h /导入头文件4class AboutLayer : public cocos2d:CCLayer/自定义的布景类5public:6 virtual bool init(); /初始化的方法7virtual void keyBackClicked();/返回键监听的回调方法8 CREATE_FUNC(AboutLayer);/最后为初始与释放资源9;10#endif说明:上述代码主要为初始化关于界面的方法包括初始化的i

33、nit方法与返回键监听的回调方法keyBackClicked,最后为初始与释放资源。 (2)然后是AboutLayer类的具体代码,其详细代码请查看AboutLayer.cpp。 4.1.4帮助界面类HelpLayer 桌球游戏的帮助界面,该界面用于介绍桌球游戏的玩法,与其他界面相比,该界面开发起来比较简单。 (1)首先是HelpLayer类的头文件代码,其主要定义了回调方法,按钮,场景管理器的引用,可见区域大型,可见区域原点坐标,以及背景精灵,其详细代码在HelpLayer.h。1#ifndef _HelpLayer_H_2#define _HelpLayer_H_3#include coc

34、os2d.h/导入头文件4using namespace cocos2d;/使用命名空间5class HelpLayer : public cocos2d:CCLayer/自定义的布景类6public:7 virtual bool init();/初始化的方法8virtual void keyBackClicked();/返回键监听的回调方法9virtual void registerWithTouchDispatcher(void);/触控的注册回调方法10/从父类继承来的触控按下的方法11virtual bool ccTouchBegan(cocos2d:CCTouch *pTouch,

35、cocos2d:CCEvent *pEvent);12/从父类继承来的触控移动的方法13virtual void ccTouchMoved(cocos2d:CCTouch *pTouch, cocos2d:CCEvent *pEvent);14/从父类继承来的触控结束的方法15virtual void ccTouchEnded(cocos2d:CCTouch *pTouch, cocos2d:CCEvent *pEvent);16/从父类继承来的触控取消的方法17virtual void ccTouchCancelled(cocos2d:CCTouch *pTouch,cocos2d:CCEv

36、ent *pEvent);18 /设置触控是否可用19void changeTouchEnable(CCObject* pSender);20CCSprite* help1;/第一张帮助图片21CCSprite* help2;/第二章帮助图片22int count;/计数器23 CREATE_FUNC(HelpLayer);/初始化与释放资源24;25#endif说明:上述代码为HelpLayer类的头文件,在该头文件中声明了HelpLayer类中需要的初始化方法与触控的回调方法,并定义了帮助背景精灵。 (2)HelpLayer类的具体代码,主要是创建背景精灵,玩法图片精灵并实现了返回键的回调

37、方法,其详细代码请查看HelpLayer.cpp. 4.1.5声音设置类MusicLayer 桌球游戏的的声音设置界面,该界面用于设置桌球游戏过程中的背景音乐播放与音效设置,与其他界面相比,该界面开发起来比较简单,其具体的开发步骤如下。(1)首先是MusicLayer类的头文件,该头文件中声明了本类用到的所有方法和定时回调方法,以及精灵、变量、按钮等,其详细代码目录下的MusicLayer.h。1#ifndef _MusicLayer_h2#define _MusicLayer_h3#include cocos2d.h/导入头文件4#include AppMacros.h/导入头文件5usin

38、g namespace cocos2d;/使用命名空间6class MusicLayer: public CCLayer7public:8CCMenu* pMenu;/菜单按钮9CCMenuItemImage* soundon;/创建声音按钮10CCMenuItemImage* soundclose;/创建声音按钮11CCMenuItemImage* effecton;/创建音效按钮12CCMenuItemImage* effectclose;/创建音效按钮13CCSprite* soundon1; /对应精灵14CCSprite* soundclose1;/对应精灵15CCSprite* e

39、ffecton1;/对应精灵16CCSprite* effectclose1;/对应精灵17public:18 MusicLayer();/初构函数19 MusicLayer();/析构函数20 virtual bool init();/初始化方法21 void initDialog();/初始化按钮的方法22 virtual void keyBackClicked(); /返回键监听23 void menuCallbacKOpenMusic(); /打开声音24 void menuCallbackCloseMusic(); /关闭声音25 void menuCallbackOpengEffe

40、ct(); /打开音效26 void menuCallbackCloseEffect();/关闭音效27 CREATE_FUNC(MusicLayer);/初始化以及资源的释放28;29#endif 说明:第816行为声音设置界面按钮以及精灵等变量的声明,具体包括菜单按钮,声音开关、音效开关按钮以及每个按钮在显示时其左侧对应的精灵图片等。第1828行为声音设置界面中方法的声明,具体包括初构与析构函数,初始化按钮的方法,返回键监听的回调方法,以及界面中按钮按下时的回调方法等。 (2)MusicLayer类的具体代码,关于该类的方法框架在上述头文件中声明方法的部分已经全部列出。首先是本类中用于初始

41、化按钮以及背景精灵initDialog方法,其详细代码见MusicLayer.cpp. (3)下面是MusicLayer界面返回键的回调方法与打开声音按钮的回调方法,其详细代码如MusicLayer.cpp1void MusicLayer:keyBackClicked()/返回键监听的回调方法2MenuLayer* menuLayer = (MenuLayer*)this-getParent();/获取的父类3this-removeFromParentAndCleanup(false);/从父类中移除该层4menuLayer-setKeypadEnabled(true);/开启返回键监听5me

42、nuLayer-setTouchEnabled(true);/开启触控监听6menuLayer-nMenu-setEnabled(true);/设置按钮可用78void MusicLayer:menuCallbacKOpenMusic()/打开声音开关回调方法9CocosDenshion:SimpleAudioEngine:sharedEngine()-pauseBackgroundMusic();10JNIUtil:saveInt(musicFlag,0);/设置声音播放的标志位11soundon-setVisible(false);/设置按钮的可见性12soundon1-setVisibl

43、e(false);/设置精灵的可见性13soundclose-setVisible(true);/设置按钮的可见性14soundclose1-setVisible(true);/设置精灵的可见性15 说明:第17行为返回键监听的回调方法,首先获取该层的父类,然后从父类中删除该层,接下来开启父类的返回键监听、触控监听,最后设置父类的按钮菜单可用。第815行为打开声音开关的回调方法,首先暂停音乐的播放,然后将音乐播放的标志位变成0,最后设置对应按钮与按钮对应精灵的可见性。 4.1.6桌球游戏模式选择界面类ChoiceLayer 桌球游戏模式选择界面类,从该界面能选择不同的桌球游戏模式与查看排行榜,

44、与其他界面相比,该界面开发起来比较简单. (1)首先是ChoiceLayer类的头文件,在该头文件中声明了ChoiceLayer类中需要的初始化方法、返回键监听的回调方法、按钮的回调方法,并定义了菜单按钮指针代码在ChoiceLayer.h。1#ifndef _ChoiceLayer_H_2#define _ChoiceLayer_H_3#include cocos2d.h/导入头文件4class ChoiceLayer : public cocos2d:CCLayer/自定义的布景类5public:6 virtual bool init();/初始化的方法7virtual void keyB

45、ackClicked();/返回键监听的回调方法8void initBuuton();/初始化按钮的方法9void choice0Callback();/choice0按钮的回调方法10void choice1Callback();/choice1按钮的回调方法11void choice2Callback();/choice2按钮的回调方法12cocos2d:CCMenu* p_menu;/菜单按钮指针13 CREATE_FUNC(ChoiceLayer);14;15#endif说明:上述代码为ChoiceLayer类的头文件,在该头文件中声明了ChoiceLayer类中需要的初始化方法、返回

46、键监听的回调方法、按钮的回调方法,并定义了菜单按钮指针。 (2)下面介绍ChoiceLayer类的具体代码,关于该类的方法框架在上述头文件中声明方法的部分已经全部列出,下面不再介绍该类的框架,该类的详细代码见桌球游戏代码ChoiceLayer.cpp. 4.1.7分数查看界面类ScoreLayer 桌球游戏的分数查看界面类,该界面用于查看玩家在计时模式中取得胜利的日期与得分,与其他界面相比,该界面开发起来比较简单,其具体的开发步骤如下。 (1)首先是ScoreLayer类的头文件,在该头文件中声明了ScoreLayer类中需要的初始化方法、返回键监听的回调方法、按钮的回调方法,在该头文件中定义

47、了该类中用到的初始化界面精灵的方法以及变量,并声明了ScoreLayer类中触摸的回调方法 (2)然后是ScoreLayer类的具体代码,关于该类的方法框架在上述头文件中声明方法的部分已经全部列出。首先要是本类的第一部分init方法,此方法用于初始化布景和一些相关资源,其详细代码请查看ScoreLayer.cpp. (3)初始化该界面中时间、得分精灵的initAll_Info方法,其详细代码ScoreLayer.cpp。 (4)分数查询界面的初始化图片的方法inTexture,返回键监听方法keyBackClicked以及重新的CCTouchMove方法,其详细代码查看ScoreLayer.c

48、pp。4.1.8桌球游戏界面类GameLayer 桌球游戏的分数查看界面类,该界面用于查看玩家在计时模式中取得胜利的日期与的得分,其他界面相比,该界面开发起来比较简单,其具体的开发步骤如下。 (1)首先给出的是GameLayer类的头文件,在该头文件中声明了GameLayer类中需要的初始化方法、返回键监听的回调方法、按钮的回调方法,定时回调方法等,其详细代码如下。 (2)然后是上面省略的头文件中变量的声明等。 (3)GameLayer类的具体代码,关于该类的方法框架在上述头文件中声明方法的部分已经 全部列出,下面不再介绍该类的框架。首先要介绍的是本类的析构函数与初构函数,此方法用于删除场景销

49、毁时堆中的对象与初始化布景和一些相关资源包括初始化背景的initBackGround方法 ,倒计时模式下初始化数字的initTimerSprite方法,初始化图片名称的方法initPname、初始化图片的方法initCCTexture2D、初始化物理世界等的方法,创建刚体的createb2Body方法。 (4)接下来介绍GameLayer类中各个按钮的回调方法,进行物理模拟update的回调方法,GameLayer类中进行物理模之后,所有刚体速度小于阈值之后的回调方法afterBallStopCallback,GameLayer类中重写的ccTouchMoved方法以及计算球杆旋转角度以及前进

50、方法的方法calculate_tableCue。 (5)GameLayer类中计算球线的calculate_Line_Total方法,GameLayer类中计算距离球线最近桌球的方法calculateBall与计算从母球发出的辅助线的长度的方法,计算距计算第二根辅助线的方法方法calculate_Line2_ASSIST。 4.2. 辅助类 上面是桌球游戏的所有界面,接下来是该桌球游戏的辅助类,本程序的辅助类有TableBall类、MyContactListener类。 4.2.1桌球精灵辅助类TableBall 桌球精灵辅助类TableBall,该类用于创建一个一个桌球,具体包括桌球的编号,桌球位移信息,起始点坐标,精灵对应的刚体等其具体的开发步骤如下。 (1)TableBall类的头文件代码,这部分代码比较简单,用于声明和定义本类中需要的方法、变量等,其主要代码TableBall.h。1#ifndef _TableBall_H_2#define _TableBall_H_3#include cocos2d.h /导入头文件4#include string

温馨提示

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

评论

0/150

提交评论