XXXX学院
计算机科学系
《Android程序设计》课程设计报告
题目:贪吃蛇
专业:计算机科学与技术
!
班级: B11计科班
学号: 0
姓名:凌波微步
Q Q :25
指导教师:
,
2014年6月
,
目录
第一章绪论 (2)
游戏简介 (2)
开发目的及意义 (3)
开发环境及工具 (3)
第二章需求分析 (4)
游戏界面分析 (4)
游戏角色分析 (4)
—
游戏控制分析 (4)
第三章总体设计 (5)
系统功能模块层次图 (5)
运行机制 (6)
贪吃蛇功能流程图 (7)
第四章详细设计与实现 (9)
SnakeActivity类 (9)
MyTile类 (10)
:
NextActivity类 (18)
SysApplication类 (19)
界面设计 (20)
第五章测试 (26)
功能测试 (26)
测试结果 (27)
第六章结论 (27)
第一章绪论
@
游戏简介
贪吃蛇游戏是一款手机游戏,同时也是一款比较需要耐心的游戏。
贪吃蛇游戏是一条蛇,不停地在手机屏幕上游走,吃在手机屏幕上出现的食物。
当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命。
开发目的及意义
通过本次课程设计,了解android软件的开发过程,熟悉并掌握JAVA语言,程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用一节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动。
意义是方便人们在休闲时通过玩手机游戏获得一点快乐,同时锻炼自己的大脑。
开发环境及工具
在Window8下进行,采用eclipse开发工具,基于安卓操作系统。
环境搭建:
1. JDK安装
[
2. Eclipse安装
3. Android SDK安装
4. ADT安装创建AVD
-
第二章需求分析
游戏界面分析
操作界面应该人性化设计,提示玩家按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为网格,还应设计蛇的样式,食物的样式和墙的样式,在蛇吃到食物后的样式,还有游戏结束时的界面显示,游戏结束后,要显示所得的分数。
游戏角色分析
设置游戏贪吃蛇初始时由固定小矩形块组成,在游戏中,要随机出现由单个矩形块构成的食物,并且设置随机出现的食物不要出现在蛇的身体中,在蛇吃到食物的时候,蛇的身体加长。
此外,要判定游戏成功与失败的条件,当蛇的头和尾相撞或者蛇的头部撞到了墙上,则游戏失败,此时游戏结束,界面显示所得分数。
另外蛇的移动原理,由外部按键设置监听控制蛇头的移动方向,在方向的指引下进行移动,蛇及食物的位置都是由坐标数组确定的,食物的位置也是随机产生的蛇的移动原理是后一矩形块覆盖前一个矩形块。
当一个食物被吃掉的时候,要自动随机生成并显示下一个食物的位置。
这些都是在设计过程中需要实现的。
游戏控制分析
—
游戏中需要通过按键对蛇的移动方位进行控制,共需要设置四个方位,分别是“东”“西”“南”“北”,在按键上用“上”“下”“左”“右”,按键与执行部分涉及到监听,通过监听指示蛇的运动,此外,要设置蛇移动是的默认方向为“右”,蛇的移动只能是90度偏转,不能进行180度偏转。
此外还要设置游戏的状态,有运行和结束两种状态,蛇体变长的时候用静态变量进行加分。
可行性分析
贪吃蛇游戏是一种简单的大众的游戏,自从进入现代化以来,深受广大电脑和手机玩家的喜爱,所以做一个简单的贪吃蛇小游戏是有用的。
本次设计我主要运用Java语言来完成。
Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。
如果没有安全保证,用户从网络下载程序执行就非常危险。
Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
第三章总体设计
系统功能模块层次图
@
工程中包括4个类,分别为SnakeActivity(主界面)、MyTile(游戏界面)、•NextActivity(游戏结束界面)和SysApplication类,通过不同Activity 之间的转换实现不同界面之间的切换。
SnakeActivity和NextActivity继承了Activity类,MyTile类继承了View类,SysApplication类继承了Application 类。
SnakeActivity类是这个游戏的入口点, MyTile类进行游戏的绘画和对游戏控制操作的处理。
Coordinate, MyHandler是 2个辅助类,是MyTile类中
的内部类。
其中, Coordinate是一个点的坐标( x,y), MyHandler将 MyHandler 对象绑定某个线程并给它发送消息。
如下图:
类图
运行机制
任何游戏都需要有个引擎来推动游戏的运行,在贪吃蛇这个游戏中,辅助类MyHandler继承自 Handler,用来把 MyHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。
注意一点: Handle对消息的处理都是异步。
MyHandler在 Handler的基础上增加 sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。
handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面。
update()与 sleep()间接的相互调用就构成了一个循环。
由于sleep()是个异步函数,所以 update()与 sleep()之间的相互调用才没有构成死循环。
运行机制如下:
《
活动图贪吃蛇功能流程图
第四章详细设计与实现
SnakeActivity类
…
程序的入口,程序的界面。
代码如下:
MyTile类
{
MyTile的基类是View,包含了贪吃蛇游戏画面的各个设定参数,主要负责绘制游戏画面。
还定义了游戏运行时的画面改变及蛇体和食物的更新方法。
MyTile 类定义如下:
SysApplication类
、
退出游戏时,推出整个应用程序。
代码如下:
<
(2)
(3)
第五章 测试
功能测试
经过在模拟器上的测试,本软件能实现其功能,
达到了小蛇在屏幕上的移动,小蛇吃食物,食物随机出现的功能,当小蛇头尾相撞或与墙相撞时,游戏结束.这些均在测试中得到验证。
(1)游戏时
(2)结束时
测试结果
通过对游戏软件的功能测试,控制测试和界面测试。
对游戏的开始新游戏、退出和统计分数功能进行测试,并测试程序的键盘点击事件,结论是该游戏软件能正确实现功能要求。
要求输出的效果与预期的输出效果完全一致。
第六章结论
这次Android课程设计让我重新熟悉了Android工程的框架及设计的步骤,以及每个文件的作用,稍微掌握了一些View类的方法,同时也学到了更多的界面设计的方法,比如如何自定义视图等。
在学习、使用Java的过程中,进一步在总体上让我对编程语言有了新的认识。
在设计、调试、修改的过程当中,我对程序的设计与构架在整体上有了进步。
这次通过做Android课程设计,我完成了小游戏贪吃蛇的任务。
在整个过程中遇到了一些问题,如蛇头怎样移动,蛇的尾巴怎样跟着移动,还有在默认情况下怎样让蛇自行移动、时间处理的机制和界面的设计问题,但最终部分被解决了,还有一些自己想到的功能,已经去做了但还是出现问题,还没能做出来,如暂停游戏、完成游戏获得分数、存档、游戏排名、蛇无效方向处理和加快蛇移动速度等,后面有时间的话,在继续深入把没有完成的功能做出来。
在这一次的课设过程中,我查阅了相关的资料,对Android有了进一步的认识,希望以后可以用Android做出一款大型软件,而不只是小游戏。
Android让我比较头疼的是有些只是知道代码的作用,却不是很清楚硬件的工作原理,还有遇到一些问题就想放弃了,这是我今后要克服的。
通过这次编程,还让我认识到了自己的不足,在编程方面,我发现自己是刚刚入门,对代码还不是很熟悉,需要我不断的充实自己,这样才能在程设计方面有所收获。
参考文献
[1] Android应用开发教程.清华大学出版社,2013。