基于Android贪吃蛇游戏的设计与实现
2016-03-30陈羽修
陈羽修
【摘 要】Android作为新一代的智能手机操作系统以及移动软件开发平台,以其强大的功能和开放性的特点而迅速发展。贪吃蛇游戏由传统街机游戏Blockade的基础上发展而来,能增强人的反应能力,是一款适用于各个年龄阶段的娱乐性的游戏。本文基于Android开发环境,采用Java语言编程,设计了一个android的手机应用软件贪吃蛇游戏。
【关键词】Android; 贪吃蛇; Java; 智能手机
0 引言
Android是Google开发的基于Linux平台的开源手机操作系统,它包括操作系统、用户界面和应用程序。手机游戏作为Android系统平台的一个重要组成部分,正在被越来越多的人所重视。贪吃蛇游戏由传统街机游戏Blockade的基础上发展而来,能增强人的反应能力,是一款适用于各个年龄阶段的娱乐性的游戏。本文基于Android开发环境,采用Java语言编程,设计了一个android的手机应用软件贪吃蛇游戏。
1 Android开发环境
Android开发环境搭建包括JDK、Eclipse、Android SDK、ADT的安装以及AVD的创建,步骤如下:
(1)JDK安装,安装完成之后,可以在检查JDK是否安装成功。
(2)Eclipse安装。
(3)Android SDK安装,检查SDK是否安装成功。
(4)ADT安装。
(5)创建AVD,为使Android应用程序可以在模拟器上运行,必须创建AVD,创建AVD完毕后,检查测试环境是否搭建成功。
2 贪吃蛇游戏总体设计
2.1 功能需求
贪吃蛇是一款经典的手机游戏,一条蛇在封闭围墙里,通过按键盘上下左右四个键控制蛇向上下左右四个方向移动,如果蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记1分;若吃到奖励苹果,加两分;若吃到毒苹果,则减3分。在游戏过程中,如果长按住方向键不放,则蛇的移动速度加快,松开方向键,恢复原速。如果蛇在移动中撞到墙或障碍物或者蛇头撞倒自己身体,则游戏结束!
2.2 游戏处理流程
游戏运行流程图如下(图1):
2.3 模块设计
本系统主要完成以下几方面的功能:游戏控制功能——包括游戏的开始、暂停、退出界面布局,其他辅助功能(如游戏积分,游戏过关等)。
游戏总设计模块划分为游戏主界面模块、游戏控制模块和游戏菜单模块。
1)游戏主界面模块
游戏主界面模块主要包括:游戏界面的边界,即游戏中的墙;游戏中蛇的构成,以及苹果的构成;游戏中障碍物的构成;游戏中分数显示以及关卡显示。
2)游戏控制模块
游戏控制模块主要包括:游戏开始控制;游戏暂停控制;游戏退出控制。其中,游戏开始控制使用上键开始游戏,启动游戏后会有一个初始菜单界面,点击“开始游戏”,弹出一句话“请按上键开始游戏”。游戏开始后蛇向下移动,然后由控制上下左右键来控制蛇的移动。游戏退出控制采用多种方式来应对不同的情况,如玩家游戏时想退出,可按“1”键,程序会自动跳转到初始菜单界面,在初始菜单界面点击“退出游戏”即可退出游戏。而当玩家在游戏中由于碰到墙或者咬到自己或者碰到障碍物而导致游戏结束时,游戏自动弹出界面,提示是继续游戏还是退出游戏,当点击“取消”时,游戏就会自动跳转到初始菜单,再点击“退出游戏”即可。
3 软件设计
3.1 类模块的设计
主要的类模块有:Snake.java为主界面类;SnakeView 为贪吃蛇类的视图主要逻辑控制和绘制类;TileView 为界面的整体视图。
3.2 主要代码
游戏的框架的构建包括基本的蛇身,苹果的实现等。本设计使用动态数组ArrayList来存储蛇身和苹果点集的信息。主要代码如下:
1)苹果的实现
private ArrayList
//用于存储苹果的坐标位置
//根据游戏的需要,苹果的位置应该是随机产生的,使用java.util.Random类中提供的随机数实现苹果坐标的随机。
int newapplex = 2+random.nextInt((mYTileCount-2)-4);
int newappley = 2+random.nextInt((mXTileCount-2)-4);
newapple = new Position(newapplex,newappley);
//检测苹果坐标是否与蛇的坐标以及墙的左边冲突
boolean flag = false; //设置冲突标志位
int snakelength = mSnakeTrail.size();
for (int index = 0; index < snakelength; index++)
{
if (mSnakeTrail.get(index).equals(newapple.x,newapple.y))
{
flag = true;
}
}
//墙的冲突检测方法与上同;当产生的新坐标没有问题时,则把新坐标加入到mAppleTrail中。
2)蛇的实现
private ArrayList
//用于存储苹果的坐标位置
//第二步:蛇的初始化,蛇身的初始化在ininNewGame中实现。
//第三步:蛇的移动,游戏中通过触发来改变坐标(+1,-1)的方式来改蛇头的方向,包括后面的蛇的碰撞检测都要用到蛇头。
Position head = mSnakeTrail.get(0);//获取蛇的头部
Position newHead = new Position(2,2);//蛇的新头部
//通过设置整型变量mDirection以及mNextDirection来判断蛇下一步移动方向,然后改变蛇头的坐标,使蛇移动
switch (mDirection) {
case EAST:
{
newHead = new Position(head.x,head.y-1);
break;
}
…….
}
//第四步:蛇的碰撞检测 蛇在移动时,若碰撞到墙壁或者自己身体,则游戏结束。代码略。
//第五步:蛇吃苹果的实现
//找苹果的方法:
int applecount = mAppleTrail.size();
int appleindex;
for ( appleindex = 0; appleindex < applecount; appleindex++)
{
Position c = mAppleTrail.get(appleindex);
if (c.equals(newHead.x,newHead.y)) {}
}
其他代码略。
4 运行结果及调试
保存原程序,启动模拟机,选择java application,运行结果如下:
游戏的开始界面,点击开始游戏选项,则游戏开始(图2、图3):
进入游戏,按上方向键开始游戏(图4):
游戏运行界面(图5):
游戏失败,出现如下对话框,选择是否继续游戏,按取消则退出游戏(图6):
5 结语
基于Android开发环境,采用Java语言编程,设计了一个android的手机应用软件贪吃蛇游戏。经调测,该应用软件操作方便,运行结果正确;整个系统恢复性能好,连接速度快,是一款适用于各个年龄阶段的娱乐性的游戏。
【参考文献】
[1]裴存亮,杨海波.Google Android手机游戏设计达人讲座[M].重庆:电脑报电子音像出版社,2011,6.
[2]靳岩,姚尚朗.Google Android开发入门与实战[M].北京:人民邮电出版社,2009,7.
[3]吴亚峰,苏亚光.Android游戏开发实战宝典[M].北京:人民邮电出版社,2010.
[4]李兴华.Java实战开发经典[M].北京:清华大学出版社,2009.
[5]张利国,代闻,龚海平.Android移动开发案例详解[M].人民邮电出版社,2010.
[6]Shi Y,Casey k,Ertl M A Virtual maehine showdown.Stack, Versus registers registers.ACM.Trans.Archit[J].Code Optim.2008,4(4):1-36.
[7]Y.Daniel Liang,Introduction to Java Programming[M].机械工业出版社,2008.
[8]郭志宏.Android应用开发详解[M].电子工业出版社,2010.
[9]Donn Felker. Android Application Development For Dummies,2010[Z].
[10]Wei-Meng Lee. Beginning Android Application Development,2010[Z].
[责任编辑:汤静]