JAVA课程论文1_第1页
JAVA课程论文1_第2页
JAVA课程论文1_第3页
JAVA课程论文1_第4页
JAVA课程论文1_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、湖北大学本科毕业论文(设计)湖 北 大 学JAVA课程设计论文 题 目 球球大作战Android游戏APP 姓 名 周喆 学 号 2014221119200208 姓 名 占渊 学 号 2014221119200123 姓 名 刘晟 学 号 2014221119200084专业年级 计算机科学与技术1401 指导教师 王雷春 职 称 副教授 2016年 5月目录绪论41背景52课程设计目标及目的62.1课程设计的目标62.2课程设计的目的62.3可行性分析72.3.1技术可行性72.3.2经济可行性分析73概要设计83.1游戏需求分析83.2初步分析93.2.1游戏主界面93.2.2游戏进行界

2、面93.3系统模块划分104详细设计124.1项目与类的结构图124.2类的详细设计134.2.1 PlayerBall类134.2.2Food类154.2.3 CiCiBall类174.2.4 BeijingImage类184.2.5 MoveCompnent类204.2.6 GameView 类215运行结果246总结287参考文献288附录28球球大作战Android游戏APP摘要联网作战版“球球大作战”游戏,由于游戏人数的增长,经常出现登录时服务器出错的问题,且联网版“球球大作战”不仅对于手机网速的要求极高,而且非常耗费流量。所以本课题着眼于开发一款单机版“球球大作战”游戏,用于闲暇时

3、的休闲娱乐。本课题展示了如何使用Android studio和开发一款球球大作战Android游戏APP。课题介绍了项目的功能、类的设计和逻辑难点等重要点。通过本课题,你可以了解到有关Android开发在实际运用中的基础知识、并对Android开发有一定的新的认识。绪论Android是一种以Linux为基础的开放源代码操作系统, 主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”、“安智”、“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域

4、上。2012年2月数据,Android占据全球智能手机操作系统市场59%的份额,中国市场占有率为68.4%。安卓作为市场占有率最高的移动操作系统,其用户群是庞大的。而随着人们在移动环境下生活工作频率的不断增加,手机的用途日益丰富。手机对于现在的用户来讲,不仅仅是一种通讯工具,更是日常娱乐、工作、生活不可分割的一部分。随着科技的发展,手机的运算速度不断提高,手机游戏作为一门新兴产业,正在迅速的发展,在人们的工作之余带来了不少的欢乐。关键字:【球球大作战】、【Android游戏】1背景安卓系统:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑

5、,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。安卓作为市场占有率最高的移动操作系统,其用户群是庞大的。而随着人们在移动环境下生活工作频率的不断增加,手机的用途日益丰富。手机对于现在的用户来讲,不仅仅是一种通讯工具,更是日常娱乐、工作、生活不可分割的一部分。随着科技的发展,手机的运算速度不断提高,手机游戏作为一门新兴产业,正在迅速的发展。2课程设计目标及目的2.1课程设计的目标鉴于当下的手机发展环境,我们小组决定制作一款能够用来长时间娱乐的安卓游戏。因为知识储量的限制,难以在有限的时间内做出精美的大型游戏。于是将目标定在了休闲小

6、游戏上。参考了国内流行的部分休闲游戏之后,决定制作以“球球大作战”为题材的小游戏。2.2课程设计的目的1.熟练地掌握Android的开发基础2.能够熟练地运用SurfaceView类进行图形的绘制、输出3.对Android的Button、TextView等控件有着比较透彻的认识,并且能熟练地使用它们4.学会使用Android Studio对安卓应用进行调试并且保存相关日志5.学会对安卓开发环境进行配置、调节6.能使用PS绘制简单的图片,例如按钮、背景等等2.3可行性分析2.3.1技术可行性利用Android Studio可以进行全面的安卓开发,其中包含的Surface类可以进行简单的图像合成与

7、输出。所以可以在不利用第三方游戏引擎的情况下利用java语言进行小游戏的开发。2.3.2经济可行性分析制作一款休闲小游戏,无需非常复杂的游戏逻辑。也不需要十分绚丽的图像素材。所有的图像素材可以自己用PS绘制。也无需导入第三方类库即可写出完整的游戏逻辑。除了花费时间以外无需其他开支。3概要设计3.1游戏需求分析 联网作战版“球球大作战”游戏,由于游戏人数的增长,经常出现登录时服务器出错的问题,且联网版“球球大作战”不仅对于手机网速的要求极高,而且非常耗费流量。所以本课题着眼于开发一款单机版“球球大作战”游戏,用于闲暇时的休闲娱乐.游戏里包含一个玩家球球(玩家球球的方向通过方向控制盘来控制)、若干

8、敌人球球、点状球球和绿刺。点状球球:点状球球的体积较小,可供玩家球球和敌人球球食用后长大;绿刺:绿刺不能移动,玩家球球和敌人球球碰到绿刺后会被绿刺轧成若干小球,但是被扎球球的总体重会增加,同时,绿刺会消失。敌人球球:敌人球球可以通过改变运动方向吃掉点状球球来增加自己的体重,也可直接吃掉比它体积小的玩家球球,或者通过分裂,吃掉比自己分身小的玩家球球来增加自己的体重。玩家球球:玩家球球可以改变自己的运动方向吃点状球球来增加自己的体重,也可直接吃掉比它体积小的玩家球球,或者通过分裂或孢吐,吃掉比自己分身小的玩家球球来增加自己的体重。3.2初步分析3.2.1游戏主界面1. 通过两个按钮:“进入游戏”和

9、“结束游戏”,分别可以完成从主界面到到游戏界面的跳转和从主界面到Android主界面的跳转。3.2.2游戏进行界面1. 游戏背景用等距的水平线和垂直线绘制而成2. 有三个标签,分别显示玩家球球的目标体积,现在体积和剩余时间。3. 一个时间标签,显示当前Android系统的时间。4. 绘制一个玩家球球,开始为最小体积(大小),游戏过程中,玩家球球的体积(大小)及分身个数会发生变化,一旦玩家球球被吃掉,意味着游戏结束。5. 绘制若干敌人球球,体积(大小)随机,游戏过程中,敌人球球的体积(大小)及分身个数会发生变化。6. 绘制若干绿刺,位置随机,随着游戏的进行,绿刺可能会消失。7. 绘制若干点状球球

10、,位置随机,随着游戏的进行,点状球球被吃掉后消失。8. 添加两个按钮。一个可以在被点击时完成玩家球球的分裂,分裂的方向由玩家球球此时的运动方向决定;一个可以在被点击时完成玩家球球的孢吐,孢吐的方向由玩家球球此时的运动方向决定。在屏幕被触摸时,出现方向控制盘。方向控制盘由一个大盘和一个小盘构成,大盘出现在屏幕刚被触摸时的位置,随后小盘随着屏幕被触摸的位置的移动而在大盘中移动,不超过大盘的边界。3.3系统模块划分1. 界面模块界面模块主要处理用户使用过程中的用户界面,包括游戏开始及游戏结束,开始界面可控制游戏的进入以及退出,结束界面可进行选择游戏的重新开始或结束。2. 绘图模块绘图模块主要对游戏过

11、程中图像进行绘制,包括玩家小球、孢子、刺球、敌人等游戏对象及游戏背景。3. 音效模块音效模块用于处理游戏过程中的声音调用,具体包括循环的游戏背景音,游戏操作时的音效。4. 控制模块控制模块用于接收处理玩家的控制信息并根据信息,控制游戏对象进行相应的操作,包括玩家对象的移动,胞吐及分裂等游戏操作。5. 游戏逻辑模块游戏逻辑模块根据玩家的操作来实行不同的游戏逻辑,具体包括:(1) 玩家对象与孢子,敌人之间的吞食。(2) 玩家对象吞食刺球进行分裂。(3) 玩家对象自身进行的胞吐及分裂。(4) 孢子的刷新及添加。下面为模块图:1. 界面模块界面模块主要处理用户使用过程中的用户界面,包括游戏开始及游戏结

12、束,开始界面可控制游戏的进入以及退出,结束界面可进行选择游戏的重新开始或结束。2. 绘图模块绘图模块主要对游戏过程中图像进行绘制,包括玩家小球、孢子、刺球、敌人等游戏对象及游戏背景。3. 音效模块音效模块用于处理游戏过程中的声音调用,具体包括循环的游戏背景音,游戏操作时的音效。球球大作战游戏APP4. 控制模块控制模块用于接收处理玩家的控制信息并根据信息,控制游戏对象进行相应的操作,包括玩家对象的移动,胞吐及分裂等游戏操作。5. 游戏逻辑模块游戏逻辑模块根据玩家的操作来实行不同的游戏逻辑,具体包括:(1) 玩家对象与孢子,敌人之间的吞食。(2) 玩家对象吞食刺球进行分裂。(3) 玩家对象自身进

13、行的胞吐及分裂。(4) 孢子的刷新及添加。4详细设计4.1项目与类的结构图根据对玩家球球,敌人球球,绿刺,点状球球,背景和操作要求的分析,主要设计了PlayerBall、Food、GameView、BeijingImage、Movecompent等类,项目与类的结构图如图4-1所示:球球大作战游戏APP界面设计及图像处理类玩家对象类PlayerBall类Food类Movecompent类BeijingImage类Gameview类CiCiBall类图4-14.2类的详细设计4.2.1 PlayerBall类PlayerBall类为玩家球球类,包含玩家球球在游戏过程中的属性和行为,以下为Play

14、erBall类的UML图(图4-2)和PlayerBall类的主要成员变量和成员函数的介绍(分别为图4-3和图4-4)。PlayerBallgameX:floatgameY:floaaimX:floataimY:floatRadius:floatColor:infenliesinfenliecosisRushingFlagPlayermove(int,int,int,int,boolean):voidbaotu(ArrayList<Food>,int,int,int,int,int):voidRushToAim(boolean,int,int,int,int):voidfenlie

15、(ArrayList<PlayerBall,double,double,int,int,int,int>):voidnearAim():boolean图4-2主要成员变量意义gameX / gemeY用来描述玩家球球在游戏地图中的横纵坐标aimX / aimY用来描述吐孢子时的目标点Radius用来描述玩家球球被绘制时的半径Fenliesin / Fenliecos用来描述玩家球球进行孢吐时的方向CouldmoveFlag作为玩家球球是否可以运动的标志IsRushingFlag是否正在分裂冲刺中的标志图4-3主要成员函数意义Playermove(int,int,int,int,bo

16、olean)根据传入的参数,更改玩家球球对象的坐标baotu(ArrayList<Food>,int,int,int,int,int,boolean)根据传入的参数,更改玩家球球分身的个数RushToAim(boolean,int,int,int,int)分裂时候冲刺位移fenlie(ArrayList<PlayerBall,double,double,int,int,int,int>)可以分裂的时候建立新的玩家对象nearAim()检验是否接近冲刺的目标位置图4-44.2.2Food类Food类为点状球球类,包含玩家球球在游戏过程中的属性和行为,以下为Food类的UM

17、L图(图4-5)和Food类的主要成员变量和成员函数的介绍(分别为图4-6和图4-7)。Food gameX:floatgameY:floatBonus:intBAOTU_SPEED:intaimX:floataimY:floatFoodsin:doubleFoodcos:doubleNumber:static intRadius:floatColor:intfoodmove(int,int,int,boolean):voidnearAim( ):boolean图4-5主要成员变量意义gameX / gemeY用来描述点状在游戏地图中的横纵坐标aimX / aimY用来描述被吐出的孢子时的目的

18、点Radius用来描述点状球球被绘制时的半径Foodsin / Foodcos用来描述玩家球球进行孢吐时的方向Number用于控制点状球球的数量图4-6主要成员函数意义foodmove(int,int,int,boolean)根据传入参数,描述孢子的移动,更改坐标。nearAim( )描述被吐出的孢子是否接近目标位置图4-74.2.3 CiCiBall类CiCiBall类用于描述绿刺,包含绿刺在游戏过程中的属性和行为,以下为CiCiBall类的UML图(图4-8)和CiCiBall类的主要成员变量和成员函数的介绍(分别为图4-9和图4-10)CiCiBallgameX / gameY:floa

19、tNumber:intbitmap:Bitmapbonus:intsetBitmap(Bitmap):void图4-8主要成员变量意义gameX /gameY用来描述绿刺在游戏地图中的横纵坐标Number用于记录绿刺的个数bitmap用于获得绿刺绘制的相关信息bonus记录其它球球被绿刺扎破时该的增加的体重图4-9主要成员函数意义setBitmap(Bitmap)用于设置绘制时的bitmap变量图4-104.2.4 BeijingImage类BeijingImage类用于描述绘制背景的相关信息,包背景在游戏过程中的属性和行为,以下为BeijingImage类的UML图(图4-11)和Beiji

20、ngImage类的主要成员变量和成员函数的介绍(分别为图4-12和图4-13)BeijingImageNewBitmap:BitmapcameraX / cameraY:floatSquareWidth:floatmaxX / maxY:floatminX/minY:floatsightH /sightW:floatavgX / avgY:floatShensuobi:floatgetBitmap(ArrayList<PlayerBall> playerBalls):Bitmap图4-11主要成员变量意义NewBitmap用于处理由像素数据定义的背景cameraX / camera

21、Y描述镜头的聚焦点SquareWidth描述背景所绘线条的间距maxX / maxY用于描述玩家球球的最大坐标点minX/minY由于描述玩家球球的最小坐标点sightH /sightW用于描述游戏地图的宽和高avgX / avgY用于描述玩家球球的平均坐标点Shensuobi渲染的时候的伸缩比(display_XX/游戏宽度)图4-12主要成员函数意义getBitmap(ArrayList<PlayerBall> playerBalls)根据传入的数据,处理好背景绘制的相关信息,并且对准镜头图4-134.2.5 MoveCompnent类MoveCompnent类用于描述和设置绘

22、制方向控制盘的相关信息,包括其在游戏过程中的属性和行为,以下为MoveCompnent类的UML图(图4-14)和MoveCompnent类的主要成员变量和成员函数的介绍(分别为图4-15和图4-16)MoveCompnentDrawingflag:booleanbigCircle:BitmaplittleCircle:BitmaplcX:floatlcY:floatgetLcX()/getLcY()startDrawing()图4-14主要成员变量意义Drawingflag是否需要绘制方向盘的标志bigCircle用于处理由像素数据定义的大圆盘littleCircle用于处理由像素数据定义的

23、小圆盘lcX /lcY描述小圆盘绘制的位置主要成员函数意义getLcX()/getLcY():float获取圆盘绘制的目标位置的坐标startDrawing():void设置是否需要绘制方向盘的标志图4-15、图4-164.2.6 GameView 类GameView类是本游戏项目中最主要也是最复杂的类,它用于处理游戏过程中的各种图像绘制并且进行各种游戏逻辑判断,包含很多成员变量和成员函数,以下为GameView类的UML图(图4-17)和GameView类的主要成员变量和成员函数的介绍(分别为图4-18和图4-19)GameViewdisplay_w:intdisplay_h:intgame

24、Width:intgameHeight:intholder:SurfaceHolderErjihuancun:Bitmapthread:ThreadplayerBallArrayList:ArrayList<PlayerBall>Foods:ArrayList<Food>ciciBalls;ArrayList<CiCiBall>Beijing:BeijingImagebigCircle:BitmaplittleCircle:BitmapmoveCompnent:MoveCompnentCouldMoveFlag:booleandownX:doubledown

25、Y:doubleupX:doubleupY:doubleSin:doubleCos:doubleFoodsin:doubleFoodcos:doublerunState:booleanRand:RandomBAOTU_DISTANCE:intRUSH_DISTANCE;intciciBall:Bitmap run( ):void onTouch(View v, MotionEvent event) :booleansurfaceCreated(SurfaceHolder ):voidsurfaceChanged(SurfaceHolder , int , int , int):voidsurf

26、aceDestroyed(SurfaceHolder):voidinit():voidBaotu():voidFenlie():voidgetSpeedbyRadius(float radius):float图4-17主要成员变量意义display_w / display_h屏幕显示的宽度和高度gameWidth / gameHeight游戏内的地图宽度和高度,以像素计算holderSurfaceView的holder,回调后获取erjihuancun二级缓存图片,在图上作画playerBallArrayList玩家对象的集合foods食物对象的集合ciciBalls刺刺球集合beijing绘制移动组件的大盘子bigCircle绘制移动组件的大盘子littleCircle绘制移动组件的小盘子 moveCompnent背景处理 moveCompnent实例downX /downY /sin/cos .OnTo

温馨提示

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

最新文档

评论

0/150

提交评论