安卓大作业 贪吃蛇

安卓大作业 贪吃蛇
安卓大作业 贪吃蛇

实训报告

实训项目名称基于安卓贪吃蛇游戏的开发与测试

二级学院信息工程学院

专业班级11级计科(2)班

姓名操玮康、方刚、聂顺涛、肖洋

学号1142151201、05、17、27

日期

项目

名称

基于安卓贪吃蛇游戏的开发与测试地点教13 605

报告内容

贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着很多人。在这次的实验中我们介绍了安卓的背景还有贪吃蛇的背景。对我们的游戏进行了各种需求的分析,然后对我们的游戏进行设计,设计分成各个模块。设计完了之后就是实现了,通过Eclipse进行编写程序设计完成,最后就是我们的工程测试部分,经过测试,最终成功的完成了游戏的设计。

教师评语

成绩:教师签名:

摘要

Google公司2007年11月5日发布Android平台——一款包括操作系统(基于Linux内核)、中间件和关键应用的手机平台,并组建了开放手机联盟(Open Handset Alliance),包括Google、中国移T-Mobile、宏达电、高通、摩托罗拉等领军企业。

本课题是利用java语言在Android平台上进行手机游戏的开发,由于本人知识的有限,以及客观条件的限制,本人打算开发一个单机版的游戏。后来得知这个小小的游戏是nokia当年很成功的一款手机游戏,许多人都玩过,也很喜欢。现在这款游戏的版本已经发展到第三版了,手机生产厂商继续开发这个游戏,看来这个游戏还是有很大的市场的。于是,我决定利用自己大学所学的知识,自己在指导老师的帮助下,独立开发这个小游戏。

本文首先详细介绍了java的一些基本的知识点,在此基础上引出了Android,介绍了Android 的基础以及其特点,然后介绍了一下Android将来的一些前景和发展。重点说明了这个贪吃蛇程序所用到的一些类和控件。介绍了这些类的一般的使用方法,以及本程序是如何使用这些类来进行游戏的开发的。

关键词:Android系统; 贪食蛇游戏

目录

1.绪论 (4)

1.1开发背景 (4)

1.1.1安卓系统简介 (4)

1.1.2游戏简介 (4)

1.2开发目的及意义 (4)

1.3开发环境及工具 (5)

1.4游戏系统开发平台及搭建 (5)

2.需求分析 (7)

2.1游戏界面分析 (7)

2.2游戏角色分析 (7)

2.3游戏控制分析 (7)

2.4可行性分析 (7)

3.总体设计 (8)

3.1贪吃蛇流程图 (8)

3.2总设计模块的划分 (9)

3.2.1主要界面 (9)

3.2.2 游戏控制模块 (9)

4.详细实现 (10)

4.1 游戏窗口Snake类 (10)

4.2 生成方块TileView类 (11)

4.3 游戏实体SnakeView类 (13)

5.测试 (15)

5.1测试用列 (15)

5.2测试用列展示图 (15)

6.结论 (20)

附录 (22)

1.绪论

1.1开发背景

1.1.1安卓系统简介

安卓系统作为新兴的手机操作系统,在问世不久,变风靡全球,占领手机操作系统里很大的市场份额,与苹果,诺基亚三分天下,Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。

1.1.2游戏简介

1976年,Gremlin平台推出了一款经典街机游戏Blockade。游戏中,两名玩家分别控制一个角色在屏幕上移动,所经之处砌起围栏。角色只能向左、右方向90度转弯,游戏目标保证让对方先撞上屏幕或围栏。听起来有点复杂?其实就是下面这个样子:基本上就是两条每走一步都会长大的贪吃蛇比谁后完蛋,玩家要做的就是避免撞上障碍物和越来越长的身体。更多照片、视频可以看 Games DBase 的介绍。

Blockade 很受欢迎,类似的游戏先后出现在 Atari 2600、TRS-80、苹果 2 等早期游戏机、计算机上。但真正让这种游戏形式红遍全球的还是21年后随诺基亚手机走向世界的贪吃蛇游戏——Snake。

贪吃蛇游戏是一款老牌的手机游戏,同时也是一款比较需要耐心地游戏。贪吃蛇游戏就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的食物,越吃越长。只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命。玩“贪吃蛇游戏”,难度最大的不是蛇长得很长的时候,而是开始的时候。那时蛇身很短,看上去难度不大,却最容易死掉,因为把玩一条小蛇让人容易走神,失去耐心。

1.2开发目的及意义

通过本次课程设计,了解android软件的开发过程,熟悉并掌握JAVA语言,HTML. 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇目的本

程序实现主要技巧在于java语言的应用。目的在于提高编程的水平。

1.3开发环境及工具

采用eclipse开发工具,在windowsxp下进行,基于安卓操作系统。

环境搭建:

1. JDK安装

2. Eclipse安装

3. Android SDK安装

1.4游戏系统开发平台及搭建

JDK和 Eclipse:

JDK是Sun公司针对java开发员的产品。自从Java推出以来,JDK已经成为使用最广

泛的java SDK。JDK是整个java的核心。包括运行环境Java工具和Java基础类库。JDK

是学好Java的第一步。

安装Eclipse的开发环境需要JDK的支持,如果没有JDK,则启动Eclipse时会报告错

误。在windows上安装JDK非常简单首先在Sun官网上下载,按照默认路径进行安装。安装

完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK

的版本信息。出现类似下面的画面表示安装成功了:

图 1.4 JDK测试

elipse如果你还没有Eclipse的话,从官网上下载Eclipse IDE for Java Developers 解压之后即可使用。

Android SDK

AndroidSDK 提供了在 windows 平台上的开发安卓应用程序的开发组件,也就是说,不

论读者使用什么样的平台都可以开发出安卓平台的应用软件,其中包含了安卓平台上开发移

动应用的各种工具集。它不仅包括了安卓模拟器和用于Eclipse的安卓开发工具插件(ADT),

而且包括了各种用来调试,打包盒在模拟器上安装应用的工具。

安卓主要是以 java 语言为基础,用户可以使用 java 语言来开发安卓平台上的软件应用。通过SDK提供的一些工具将其打包成安卓平台使用的apk文件,然后在使用SDK中的模拟器(Emulator)来模拟和测试软件在安卓平台运行情况和效果。

安装安卓的SDK,安装好JDK和Eclipse后,打开Eclipse IDE。依次单击Menu项中的windows->Android SDK Manager项,进入Android SDK Manager界面选择Tool和需要的Android版本项进行更新安装。

ADT

Android为Eclipse定制了一个插件,及ADT(Android Development Tools),目的是为用户提供一个强大的综合环境用于开发Android应用程序,ADT扩展了Eclipse的功能,可以让用户快速的建立Android项目,创建应用程序界面,在基于Android API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。

安装Android Development Tool plug-in,打开Eclipse IDE。依次单击Menu项中的Help->Software Update项

2.需求分析

2.1游戏界面分析

在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为许多个小方格,还应设计蛇的样式,苹果的样式和墙的样式,在蛇吃到苹果后的样式,以及游戏按什么键开始。

2.2游戏角色分析

设置游戏贪吃蛇初始时由固定个小矩形块组成,并且,游戏中,要随机出现由单个矩形块构成的苹果,并且在设置苹果的时候,还要设置,不能使将要出现的苹果出现在蛇的身体之下,在蛇吃到苹果的时候,要将蛇的身体加长。此外,要判定游戏成功与失败的条件,当蛇的头和尾相撞或者蛇的头部撞到了墙上,则游戏失败。另外蛇的移动原理,由外部按键设置监听控制蛇头的移动方向,在方向的指引下进行移动,蛇及苹果的位置都是由坐标数组确定的,苹果的位置也是随机产生的蛇的移动原理是后一矩形块覆盖前一个矩形块。当一个苹果被吃掉的时候,要自动生成并显示下一个苹果的位置。这些都是在设计过程中需要实现的。

2.3游戏控制分析

游戏中需要通过按键对蛇的移动方位进行控制,共需要设置四个方位,分别是“东”“西”“南”“北”,在按键上用“上”“下”“左”“右”,按键与执行部分便涉及到监听,通过监听指示蛇的运动,此外,要设置蛇移动是的默认方向为“上”,设计过程中还应注意,蛇的移动只能是90度偏转,不能进行180度偏转。

2.4可行性分析

贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。

贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡。本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏

3.总体设计

3.1贪吃蛇流程图

贪吃蛇程序的大致运行如图3.1所示

开始

初始化蛇和苹果屏幕显示蛇和苹果的位置蛇开始移动,后坐标覆盖前坐标

是否有按键按下

根据按键不同在原坐标基础上改变蛇的坐标位置

更新方向

是否吃到苹果

根据上次方向更

新坐标

是否越界或撞到蛇身

蛇身加1

游戏结束

图3.1流程图

3.2总设计模块的划分

游戏总设计模块划分为游戏主要界面模块、游戏控制模块。

3.2.1主要界面

游戏主界面模块主要是指游戏的框图,其包括一下内容:

1、游戏界面的边界,即游戏中的墙;

2、游戏中蛇的构成,以及苹果的构成;

3.2.2 游戏控制模块

游戏开始控制:

我们的程序是使用点击这里开始启动游戏后会有一个初始菜单界面,游戏开始后蛇向下移动,然后由控制上下左右键来控制蛇的移动。在程序中我们重新建act来控制游戏的开始,使游戏的开始界美观。

4.详细实现

这个是,是游戏的文件总目录,如图4.1所示

图4.1 游戏文件目录

4.1 游戏窗口Snake类

游戏的开始:oncreate此外的亮点是:setContentView(https://www.360docs.net/doc/dc11332027.html,yout.snake_layout);设置窗口的布局文件,这里的snake_layout使用了自定义资源标签的方式,由于Android内部的R.资源不包含SnakeView类,所以我们必须写清楚Package,比如com.exmple.android.snake.SnakeView 然后和其他控件使用一样,都是一个id然后宽度、高度、以及自定义的标签tileSize(尾巴长度),如下:

android:id="@+id/snake"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

tileSize="12"

/>

onPause:关于这点,大家可以参考下在blog中关于active生命周期在玩游戏过程中,如果有来电或是其它事件中断,这时应该把当前状态保存。以便返回时,还可以继续玩游戏。这就使用onSaveInstanceState实现保存当前状态。

游戏窗口如图4.2所示

图4.2 游戏窗口

4.2 生成方块TileView类

TileView,从名称上不难看出这是一个方砖类,就是生成一个方块。TileView使用了Android平台的显示基类View,View类是直接从https://www.360docs.net/doc/dc11332027.html,ng.Object派生出来的,是各种控件比如TextView、EditView的基类,当然包括我们的窗口Activity类,这些在SDK文档中都说的比较清楚。

这里定义了5个int型全局的变量,分别是方砖的数量mTileSize;方砖水平x防线的数量mXTileCount;以及竖直y方向上的方砖数量mYTileCount,下面是一个相对偏移位置mXOffset和mYOffset;这里android主要让要大家了解如何自定义View在Android开发中,在一个View类中主要是重写onSizeChanged方法来控制改变部分,以及onDraw实现画布的修改,实现的代码如下:

public TileView(Context context, AttributeSet attrs) {

super(context, attrs);

TypedArray a = context.obtainStyledAttributes(attrs,

R.styleable.TileView);

mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);

a.recycle();

}

public void resetTiles(int tilecount) {

mTileArray = new Bitmap[tilecount];

}

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) { mXTileCount = (int) Math.floor(w / mTileSize);

mYTileCount = (int) Math.floor(h / mTileSize);

mXOffset = ((w - (mTileSize * mXTileCount)) / 2);

mYOffset = ((h - (mTileSize * mYTileCount)) / 2);

mTileGrid = new int[mXTileCount][mYTileCount];

clearTiles();

}

我们自定义的TileView类需要自己添加一个构造方法,根据需要,我们还重载了一种包含样式的方法,这里大家可以多看下Gallery控件的实现,就好理解了,下面是基本框架。public TileView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);} public TileView(Context context, AttributeSet attrs) { super(context, attrs);}

在贪食蛇游戏中我们知道Snake是移动的,所以加入了一个清除显示的clearTiles方法,通过一个二维数组保存一个gird网格型的运动轨迹,下一次我们将会讲解android贪食蛇的游戏逻辑和完整的关联拼接实现。代码如下:

public void clearTiles() {

for (int x = 0; x < mXTileCount; x++) {

for (int y = 0; y < mYTileCount; y++) {

setTile(0, x, y);

}

}

}

public void setTile(int tileindex, int x, int y) {

mTileGrid[x][y] = tileindex;

}

具体的实现如图4.3所示。

图4.3 蛇身和点及其位置

4.3 游戏实体SnakeView类

在这个类中实现的游戏的实体,从游戏需求的角色,这个游戏包括了如下方面:

1.随机产生小方块,小方块这里是复数,当然是是大于1个苹果,所以代码中产生了两个苹果。

2.游戏状态管理

3.画蛇,view的更新

4.吃掉小方块后小蛇状态的变化

5.画围墙

SnakeView定义类:

int mMode = READY;

public static final int PAUSE = 0;

public static final int READY = 1;

public static final int RUNNING = 2;

public static final int LOSE = 3;

分别表示准备开始、运行状态、游戏结束。

如图4.4是游戏开始状态。

图4.4 游戏开始如图4.5是游戏运行状态。

图4.5 游戏运行状态如图4.6是游戏的结束状态。

图4.6 游戏结束

5.测试

5.1测试用列

通过以下的测试用例进行对游戏各功能模块的测试并加以修改,如表5.1所示。

测试编号测试输入期望结果实际结果

001 测试点击游戏

开始后的状态

游戏开始,进入游

戏开始界面

游戏开始,进入游

戏开始界面

002 测试点击上方

向键后的状态

贪吃蛇会向上方

转弯

贪吃蛇会向上方

转弯

003 测试点击下方

向键后的状态

贪吃蛇会向下方

转弯

贪吃蛇会向下方

转弯

004 测试点击左方

向键后的状态

贪吃蛇会向左方

转弯

贪吃蛇会向左方

转弯

005 测试点击右方

向键后的状态

贪吃蛇会向右方

转弯

贪吃蛇会向右方

转弯

006 测试贪吃蛇吃

到果实后的状

贪吃蛇会变长贪吃蛇蛇会变长。

007 测试贪吃蛇撞

墙后会怎样

游戏结束,显示游

戏结束界面

游戏结束,显示游

戏结束界面

表5.1 测试用例表

5.2测试用列展示图

1. 测试点击游戏开始后的状态,点击屏幕后开始游戏,测试成功,如图5.2所示。

图5.2 游戏开始

2. 测试点击上方向键后后状态,贪吃蛇会向上方转弯,测试成功,如图5.3所示

图5.3 贪吃蛇向上转弯

5. 测试点击左方向键后的状态,贪吃蛇会向左方转弯,测试成功。如图5.5所示。

图5.5 贪吃蛇向右

7.测试贪吃蛇吃到果实后的状态, 贪吃蛇会变长,测试成功,如图5.7所示。

图5.7 贪吃蛇变长

8.测试贪吃蛇撞墙后会游戏结束且显示吃掉果实数,测试成功,如图5.8所示。

图5.8 贪吃蛇撞墙,游戏结束

相关主题
相关文档
最新文档