基于android的贪吃蛇游戏设计与开发.doc
- 文档编号:235895
- 上传时间:2022-10-07
- 格式:DOC
- 页数:32
- 大小:2.04MB
基于android的贪吃蛇游戏设计与开发.doc
《基于android的贪吃蛇游戏设计与开发.doc》由会员分享,可在线阅读,更多相关《基于android的贪吃蛇游戏设计与开发.doc(32页珍藏版)》请在冰豆网上搜索。
课程实训报告
课程名称计算机系统综合实训
课题名称基于Android的贪吃蛇游戏开发
专业计算机科学与技术
班级
学号
姓名
指导教师
2013年12月4日
湖南工程学院
课程实训任务书
课程名称计算机系统综合实训
课题基于Android的贪吃蛇游戏开发
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2013年12月4日
任务完成日期2013年12月20日
目录
1、程序构思 2
2、程序设计 3
2.1游戏功能 3
2.2总设计模块的划分 4
2.3游戏主界面模块 4
2.4游戏控制模块 4
2.5类模块设计 4
3、程序实现 5
3.1、游戏界面的实现 5
3.2、游戏整个框架的构建 6
3.3、实现键盘响应事件 8
3.4、刷新 9
3.4、实现页面的切换 9
3.5、加载游戏 9
3.6、游戏背景界面的改进 9
3.8、添加音效 10
3.9、游戏本身的完善 10
3、类模块具体设计 11
TitleView.java 11
SnakeView.java 12
4. 程序结果 14
5. 总结与展望 17
6.附录 17
1、程序构思
贪吃蛇游戏是一款非常经典的手机游戏,贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,在设计开发过程中,需要处理好各个类之间间的逻辑依赖关系和数据通信关系。
正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用android开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握android环境的使用方法,培养初步的项目分析能力和程序设计能力。
2、程序设计
游戏设计的处理流程图:
开始
初始化界面和蛇身
放置食物
蛇开始运动
蛇吃到食?
蛇长大
蛇死亡?
继续续?
退出界面
N
N
Y
N
Y
游戏者按键选择
Y
2.1游戏功能
本系统主要完成以下几方面的功能:
游戏控制功能——包括游戏的开始、暂停、退出
界面布局
其他辅助功能(如游戏帮助,游戏积分,游戏过关等)
2.2总设计模块的划分
游戏总设计模块划分为游戏主要界面模块、游戏控制模块和游戏菜单模块。
2.3游戏主界面模块
游戏主界面模块主要是指游戏的框图,其包括一下内容:
1、游戏界面的边界,即游戏中的墙;
2、游戏中蛇的构成,以及苹果的构成;
3、游戏中障碍物的构成;
4、游戏中分数显示以及关卡显示。
2.4游戏控制模块
(1)游戏开始控制:
我们的程序是使用上键开始游戏,启动游戏后会有一个初始菜单界面,我们点击“开始游戏”,弹出一句话“请按上键开始游戏”。
游戏开始后蛇向下移动,然后由控制上下左右键来控制蛇的移动。
在程序中我们重新建了一个activity来控制游戏的开始,使游戏的开始界面更美观。
(2)游戏暂停控制:
我们是使用center键来控制游戏的暂停的,这是一项人性化的设计,当玩家在游戏过程中突遇紧急情况时可以按center键暂停游戏,等玩家空闲后按center键可以继续游戏。
(3)游戏退出控制:
在游戏的退出上我们的程序使用了多种方式来应对不同的情况,当玩家正在游戏中时,如想退出可以按“1”键,程序会自动跳转到初始菜单界面,在初始菜单界面点击“退出游戏”即可退出游戏。
如果玩家在游戏中由于碰到墙或者咬到自己或者碰到障碍物而导致游戏结束的,游戏或自动弹出一个界面,里面有提示是继续游戏还是退出游戏,当点击“取消”时,游戏就会自动跳转到初始菜单,再点击“退出游戏”即可。
2.5类模块设计
src源码目录:
Snake.java为主界面类;
SnakeView为贪吃蛇类的视图主要逻辑控制和绘制类;
TitleView为界面的整体视图;
MenuActivity为菜单类,可以跳转到Help类和Snake类;
Help为游戏帮助类。
3、程序实现
3.1、游戏界面的实现
1、先声明用来存放绘画图像的X,Y轴的位置的数组:
private int[][] mTileGrid;
2、编写存放图片索引用图片的X,Y轴位置;
public void setTile(int tileindex, int x, int y)
{ 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、调用以上的方法以循环的方式位置数组赋值以及图片的索引,
private void updateWalls(){
for (int x=0;x< mXTileCount;x++){
setTile(GREEN_STAR,x,0);
setTile(GREEN_STAR,x, mYTileCount -1); }
for (int y=1;y< mYTileCount -1;y++){
setTile(GREEN_STAR,0,y);/设置左边的界线的位置
setTile(GREEN_STAR, mXTileCount -1,y);/设置右边的界线的位置
}}
5、重写VIEW 类里面的方法。
把界线画出。
public void onDraw(Canvascanvas)
{
super.onDraw(canvas);
for (int x=0;x< mXTileCount;x+=1){
for (int y=0;y< mYTileCount;y+=1){
if (mTileGrid[x][y]>0){
canvas.drawBitmap(mTileArray[mTileGrid[x][y]],
mXOffset +x* mTileSize,
mYOffset +y* mTileSize,mPaint);}
同上可见:
整个界面其实就是由图片数组拼直面成的。
到此,则可以实现游戏背景墙。
3.2、游戏整个框架的构建
1实现方案
游戏的整个框架的构建包括基本的蛇身,苹果的实现,有两种方案:
方案一:
使用常用的数组来存储蛇身和苹果的点集的信息。
此方案的优点是对数组的操作较为熟悉,实现简单,但是部分操作较为麻烦,有可能出现数组越界,或者浪费太多存储空间。
方案二:
使用动态数组ArrayList来存储蛇身和苹果点集的信息。
ArrayList可以用来定义为各种不同类型的数组,不仅仅局限于int整型;而且ArrayList为用户编程提供了各种借口,比如插入,删除元素,统计元素个数等,实现较为简单,不会出现数组越界的问题。
结合各种因素的考虑,我们在设计中采用第二种方案。
定义Position方法,用于存储蛇身和苹果的点集坐标
privateclassPosition{//存储每个点的坐标
publicintx;
publicinty;
publicPosition(intxposition,intyposition){
x=xposition;
y=yposition;
}
publicbooleanequals(intnewx,intnewy){
if(x==newx&&y==newy)
{returntrue;}
returnfalse;
}}
定义setMode方法,用于表示游戏所处的几种状态:
进行,暂停,
publicvoidsetMode(intnewMode)
{
intoldMode=mMode;
mMode=newMode;
if(newMode==RUNNING&&oldMode!
=RUNNING)
{}
if(newMode==PAUSE){}
if(newMode==LOSE) {}
if(newMode==READY) {}
}
苹果的实现
声明:
privateArrayList
用于存储苹果的坐标位置
根据游戏的需要,苹果的位置应该是随机产生的,使用java.util.Random类中提供的随机数实现苹果坐标的随机。
intnewapplex=2+random.nextInt((mYTileCount-2)-4);
intnewappley=2+random.nextInt((mXTileCount-2)-4);
newapple=newPosition(newapplex,newappley);
检测苹果坐标是否与蛇的坐标以及墙的左边冲突
设置冲突标志位:
booleanflag=false;
intsnakelength=mSnakeTrail.size();
for(intindex=0;index
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 android 贪吃 游戏 设计 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)