毕业设计(论文)-基于android的贪吃蛇游戏设计与开发

上传人:博****1 文档编号:500138378 上传时间:2023-11-11 格式:DOCX 页数:32 大小:380.74KB
返回 下载 相关 举报
毕业设计(论文)-基于android的贪吃蛇游戏设计与开发_第1页
第1页 / 共32页
毕业设计(论文)-基于android的贪吃蛇游戏设计与开发_第2页
第2页 / 共32页
毕业设计(论文)-基于android的贪吃蛇游戏设计与开发_第3页
第3页 / 共32页
毕业设计(论文)-基于android的贪吃蛇游戏设计与开发_第4页
第4页 / 共32页
毕业设计(论文)-基于android的贪吃蛇游戏设计与开发_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《毕业设计(论文)-基于android的贪吃蛇游戏设计与开发》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于android的贪吃蛇游戏设计与开发(32页珍藏版)》请在金锄头文库上搜索。

1、西安思源学院课程实训报告课程名称计算机系统综合实训课题名称基于Android的贪吃蛇游戏开发专业计算机软件技术班级电信学院软件技术01班学号姓名指导教师2015年6月4日目录1、程序构思22、程序设计32.1 游戏功能32.2 总设计模块的划分42.3 游戏主界面模块42.4 游戏控制模块4类模块设计43、程序实现5、游戏界面的实现5、游戏整个框架的构建6、实现键盘响应事件8、刷新9、实现页面的切换9、加载游戏9、游戏背景界面的改进9、添加音效10、游戏本身的完善103、类模块具体设计1111124. 程序结果135. 总结与展望176. 附录171、程序构思贪吃蛇游戏是一款非常经典的手机游戏

2、,贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,在设计开发过程中,需要处理好各个类之间间的逻辑依赖关系和数据通信关系。正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用android开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握android环

3、境的使用方法,培养初步的项目分析能力和程序设计能力。2、程序设计开始初始化界面和蛇身游戏者按键选择放置食物蛇吃到食蛇开始运动Y蛇长大蛇死亡?游戏设计的处理流程图nN11退出界面2.1 游戏功能本系统主要完成以下几方面的功能:游戏控制功能一一包括游戏的开始、暂停、退出界面布局其他辅助功能(如游戏帮助,游戏积分,游戏过关等)2.2 总设计模块的划分游戏总设计模块划分为游戏主要界面模块、游戏控制模块和游戏菜单模块。2.3 游戏主界面模块游戏主界面模块主要是指游戏的框图,其包括一下内容:1、游戏界面的边界,即游戏中的墙;2、游戏中蛇的构成,以及苹果的构成;3、游戏中障碍物的构成;4、游戏中分数显示以及

4、关卡显示。2.4 游戏控制模块(1)游戏开始控制:我们的程序是使用上键开始游戏,启动游戏后会有一个初始菜单界面,我们点击“开始游戏”,弹出一句话“请按上键开始游戏”。游戏开始后蛇向下移动,然后由控制上下左右键来控制蛇的移动。在程序中我们重新建了一个activity来控制游戏的开始,使游戏的开始界面更美观。(2)游戏暂停控制:我们是使用center键来控制游戏的暂停的,这是一项人性化的设计,当玩家在游戏过程中突遇紧急情况时可以按center键暂停游戏,等玩家空闲后按center键可以继续游戏。(3)游戏退出控制:在游戏的退出上我们的程序使用了多种方式来应对不同的情况,当玩家正在游戏中时,如想退出

5、可以按“1”键,程序会自动跳转到初始菜单界面,在初始菜单界面点击“退出游戏”即可退出游戏。如果玩家在游戏中由于碰到墙或者咬到自己或者碰到障碍物而导致游戏结束的,游戏或自动弹出一个界面,里面有提示是继续游戏还是退出游戏,当点击“取消”时,游戏就会自动跳转到初始菜单,再点击“退出游戏”即可。ELL!tl!La 不 T;: 一 T11 T- :;:;src源码目录:,Sm&a皿drQidMslp.jsvaMnuLctivity.jIva$肌或生,4T日SiisksVie*-Java.TileViewjaa.t片品t-andj-?LdSnake.java为主界面类;SnakeView为贪吃蛇类的视图主

6、要逻辑控制和绘制类;TitleView为界面的整体视图;MenuActivity为菜单类,可以跳转到Help类和Snake类;Help为游戏帮助类。3、程序实现3.1、游戏界面的实现1、先声明用来存放绘画图像的X,Y轴的位置的数组:privateintmTileGrid;2、编写存放图片索引用图片的X,Y轴位置;publicvoidsetTile(inttileindex,intx,inty)mTileGridxy=tileindex;3.把图片素材加入到bitmap中publicvoidloadTile(intkey,Drawabletile)Bitmapbitmap=Bitmap.crea

7、teBitmap(mTileSize,mTileSize,Bitmap.Config.ARGB_8888);Canvascanvas=newCanvas(bitmap);tile.setBounds(0,0,mTileSize,mTileSize);tile.draw(canvas);mTileArraykey=bitmap;4、调用以上的方法以循环的方式位置数组赋值以及图片的索引,privatevoidupdateWalls()for(intx=0;xmXTileCount;x+)setTile(GREEN_STAR,x,0);setTile(GREEN_STAR,x,mYTileCount

8、-1);for(inty=1;ymYTileCount-1;y+)setTile(GREEN_STAR,0,y);/设置左边的界线的位置setTile(GREEN_STAR,mXTileCount-1,y);/设置右边的界线的位置5、重写VIEW类里面的方法。把界线画出。publicvoidonDraw(Canvascanvas)super.onDraw(canvas);for(intx=0;xmXTileCount;x+=1)for(inty=0;y0)canvas.drawBitmap(mTileArraymTileGridxy,mXOffset+x*mTileSize,mYOffset+

9、y*mTileSize,mPaint);整个界面其实就是由图片数组拼直面成的。到此,则可以实现游戏背景墙。3.2、游戏整个框架的构建1实现方案游戏的整个框架的构建包括基本的蛇身,苹果的实现,有两种方案:方案一:使用常用的数组来存储蛇身和苹果的点集的信息。此方案的优点是对数组的操作较为熟悉,实现简单,但是部分操作较为麻烦,有可能出现数组越界,或者浪费太多存储空间。方案二:使用动态数组ArrayList来存储蛇身和苹果点集的信息。ArrayList可以用来定义为各种不同类型的数组,不仅仅局限于int整型;而且ArrayList为用户编程提供了各种借口,比如插入,删除元素,统计元素个数等,实现较为简

10、单,不会出现数组越界的问题。结合各种因素的考虑,我们在设计中采用第二种方案。定义Position方法,用于存储蛇身和苹果的点集坐标privateclassPosition/存储每个点的坐标publicintx;publicinty;publicPosition(intxposition,intyposition)x=xposition;y=yposition;publicbooleanequals(intnewx,intnewy)if(x=newx&y=newy)returntrue;returnfalse;定义setMode方法,用于表示游戏所处的几种状态:进行,暂停,publicvoids

11、etMode(intnewMode)intoldMode=mMode;mMode=newMode;if(newMode=RUNNING&oldMode!=RUNNING)if(newMode=PAUSE)if(newMode=LOSE)if(newMode=READY)苹果的实现声明:privateArrayListmAppleTrail=newArrayList();用于存储苹果的坐标位置根据游戏的需要,苹果的位置应该是随机产生的,使用java.util.Random类中提供的随机数实现苹果坐标的随机。intnewapplex=2+random.nextInt(mYTileCount-2)-

12、4);intnewappley=2+random.nextInt(mXTileCount-2)-4);newapple=newPosition(newapplex,newappley);检测苹果坐标是否与蛇的坐标以及墙的左边冲突设置冲突标志位:booleanflag=false;intsnakelength=mSnakeTrail.size();for(intindex=0;indexsnakelength;index+)if(mSnakeTrail.get(index).equals(newapple.x,newapple.y)flag=true;墙的冲突检测方法与上同;当产生的新坐标没有问

13、题时,则把新坐标加入到mAppleTrail中。蛇的实现声明:privateArrayListmAppleTrail=newArrayList();用于存储苹果的坐标位置蛇的初始化蛇身的初始化在ininNewGame中实现,直接把最初要呈现给玩家的蛇的情况定义出来,即添加一定数量的坐标点进入mSnakeTrail中,使得在最初开始游戏时,有蛇可以进行自由移动。蛇的移动游戏中是通过触发来改变坐标(+1,-1)的方式来改蛇头的方向,包括后面的蛇的碰撞检测都要用到蛇头。获取蛇的头部:Positionhead=mSnakeTrail.get(0);蛇的新头部:PositionnewHead=newPo

14、sition(2,2);通过设置整型变量mDirection以及mNextDirection来判断蛇下一步移动方向,然后改变蛇头的坐标,使蛇移动switch(mDirection)caseEAST:newHead=newPosition(head.x,head.y-1);break;蛇的碰撞检测蛇在移动时,若碰撞到墙壁或者自己身体,则游戏结束。蛇的碰壁检测:if(head.x1)|(head.ymYTileCount-2)|(head.ymXTileCount-2)setMode(LOSE);return;蛇的自身碰撞的检测:intwallength=mWallTrail.size();for(intwallindex=0;wallindexwallength;wallindex+)Positionc=mWallTrail.get(wallindex);if(c.equals(newHead.x,newHead.y)setMode(LOSE);return;蛇吃苹果的实现蛇所经过的每一个坐标,他们都要在苹果所在的ArrayLis

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号