课程实训报告课程名称计算机系统综合实训课题名称基于Android的贪吃蛇游戏开发专业计算机科学与技术班级学号姓名指导教师2013年12月4日湖南工程学院课程实训任务书课程名称计算机系统综合实训课题基于Android的贪吃蛇游戏开发专业班级学生姓名学号指导老师审批任务书下达日期2013年12月4日任务完成日期2013年12月20日1目录1、程序构思....................................................................................................................................12、程序设计....................................................................................................................................22.1游戏功能...........................................................................................................................22.2总设计模块的划分...........................................................................................................32.3游戏主界面模块...............................................................................................................32.4游戏控制模块...................................................................................................................32.5类模块设计........................................................................................................................33、程序实现....................................................................................................................................43.1、游戏界面的实现...........................................................................................................43.2、游戏整个框架的构建...................................................................................................53.3、实现键盘响应事件.........................................................................................................73.4、刷新.................................................................................................................................83.4、实现页面的切换.............................................................................................................83.5、加载游戏.......................................................................................................................83.6、游戏背景界面的改进.....................................................................................................83.8、添加音效.........................................................................................................................93.9、游戏本身的完善.............................................................................................................93、类模块具体设计......................................................................................................................10TitleView.java.....................................................................................................................10SnakeView.java.....................................................................................................................114.程序结果.................................................................................................................................135.总结与展望.............................................................................................................................166.附录...........................................................................................................................................161、程序构思贪吃蛇游戏是一款非常经典的手机游戏,贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,在设计开发过程中,需要处理好各个类之间间的逻辑依赖关系和数据通信关系。正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用android开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握android环境的使用方法,培养初步的项目分析能力和程序设计能力。22、程序设计游戏设计的处理流程图:2.1游戏功能本系统主要完成以下几方面的功能:游戏控制功能——包括游戏的开始、暂停、退出界面布局其他辅助功能(如游戏帮助,游戏积分,游戏过关等)开始初始化界面和蛇身放置食物蛇开始运动蛇吃到食?蛇长大蛇死亡?继续续?退出界面NNYNY游戏者按键选择Y32.2总设计模块的划分游戏总设计模块划分为游戏主要界面模块、游戏控制模块和游戏菜单模块。2.3游戏主界面模块游戏主界面模块主要是指游戏的框图,其包括一下内容:1、游戏界面的边界,即游戏中的墙;2、游戏中蛇的构成,以及苹果的构成;3、游戏中障碍物的构成;4、游戏中分数显示以及关卡显示。2.4游戏控制模块(1)游戏开始控制:我们的程序是使用上键开始游戏,启动游戏后会有一个初始菜单界面,我们点击“开始游戏”,弹出一句话“请按上键开始游戏”。游戏开始后蛇向下移动,然后由控制上下左右键来控制蛇的移动。在程序中我们重新建了一个activity来控制游戏的开始,使游戏的开始界面更美观。(2)游戏暂停控制:我们是使用center键来控制游戏的暂停的,这是一项人性化的设计,当玩家在游戏过程中突遇紧急情况时可以按center键暂停游戏,等玩家空闲后按center键可以继续游戏。(3)游戏退出控制:在游戏的退出上我们的程序使用了多种方式来应对不同的情况,当玩家正在游戏中时,如想退出可以按“1”键,程序会自动跳转到初始菜单界面,在初始菜单界面点击“退出游戏”即可退出游戏。如果玩家在游戏中由于碰到墙或者咬到自己或者碰到障碍物而导致游戏结束的,游戏或自动弹出一个界面,里面有提示是继续游戏还是退出游戏,当点击“取消”时,游戏就会自动跳转到初始菜单,再点击“退出游戏”即可。2.5类模块设计src源码目录:Snake.java为主界面类;4SnakeView为贪吃蛇类的视图主要逻辑控制和绘制类;TitleView为界面的整体视图;MenuActivity为菜单类,可以跳转到Help类和Snake类;Help为游戏帮助类。3、程序实现3.1、游戏界面的实现1、先声明用来存放绘画图像的X,Y轴的位置的数组:privateint[][]mTileGrid;2、编写存放图片索引用图片的X,Y轴位置;publicvoidsetTile(inttileindex,intx,inty){mTileGrid[x][y]=tileindex;}3.把图片素材加入到bitmap中publicvoidloadTile(intkey,Drawabletile){Bitmapbitmap=Bitmap.createBitmap(mTileSize,mTileSize,Bitmap.Config.ARGB_8888);Canvascanvas=newCanvas(bitmap);tile.setBounds(0,0,mTileSize,mTileSize);tile.draw(canvas);mTileArray[key]=bitmap;}4、调用以上的方法以循环的方式位置数组赋值以及图片的索引,privatevoidupdateWalls(){for(intx=0;xmXTileCount;x++){setTile(GREEN_STAR,x,0);setTile(GREEN_STAR,x,mYTileCount-1);}for(inty=1;ymYTileCount-1;y++){setTile(GREEN_STAR,0,y);/设置左边的界线的位置setTile(GREEN_STAR,mXTileCount-1,y);/设置右边的界线的位置}}5、重写VIEW类里面的方法。