- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于android的贪吃蛇游戏设计与开发.doc
中南林业科技大学涉外学院
期末作业报告
课程名称: 移动终端游戏开发(Java平台)
专 业: 计算机科学与技术
学 号:
姓 名: 方龙
2015年 6 月 19 日
基于Android的贪吃蛇游戏的设计与开发
1. 程序构思
贪吃蛇游戏是一款非常经典的手机游戏,贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,在设计开发过程中,需要处理好各个类之间间的逻辑依赖关系和数据通信关系。
正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用android开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握android环境的使用方法,培养初步的项目分析能力和程序设计能力。
2.程序设计
游戏设计的处理流程图
:
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.程序实现
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中
public void loadTile(int key, Drawable tile)
{
Bitmap bitmap =
Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
tile.setBounds(0, 0, mTileSize, mTileSize);
tile.draw(canvas);
mTileArray[key] = bitmap;
}
4、调用以上的方法以循环的方式位置数组赋值以及图片的索引,
private?void?updateWalls(
文档评论(0)