贪吃蛇实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

黄淮学院
嵌入式系统






学院:信息工程学院
班级:计科1301B
学号:1334110124
姓名:张硕
时间:12.28.2015
目录
1 项目概述 (1)
1.1 引言 (1)
1.1.1开发背景 (1)
1.1.2开发目的及意义 (1)
1.1.3 开发平台的搭建 (1)
1.2 功能简述 (1)
1.3 进度安排 (3)
1.4 风险预估 (3)
2 系统分析与设计 (4)
3 系统实现 (6)
4 总结与展望 (10)
5 参考文献 (10)
1 项目概述
1.1 引言
1.1.1开发背景
Android 一词的本义指“机器人”,同时Android 也是Google 于2007年11月5日宣布的基于linux 平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

2008年9月22日,美国运营商T-Mobile USA 在纽约正式发布第一款基于Android 的手机——T-Mobile G1。

该款手机为宏达电制造,是世界上第一部使用Android 操作系统的手机,支持WCDMA/HSPA 网络,理论下载速率7.2Mbps ,并支持 Wi-Fi 。

在随后的几个月越来越多的厂商也开始宣布将提供Android 手机。

1.1.2开发目的及意义
本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用Java 开发应用程序的基本方法及基本技巧。

1.1.3 Android 开发平台的搭建
(一)1、下载并安装JDK 组件,注意分辨所要安装的计算机操作位数。

本次使用的是Windows7 64位操作系统,下载地址:
/technetwork/java/javase/downloads/index.html
般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。

(该过程要求严格,比较容易出错)。

过程如下: 游标移至计算机→右击属性→高级系统设置→环境变量→新建
3、新建三个环境变量,分别是JAVA_HOME 、CLASS_PATH 、PATH ,变量名是它
们各自的路径。

(二)SDK 的下载与安装,下载地址:
/sdk/index.html#download
下载并解压后,打开SDK Manager.exe ,在出现的界面中选定要开发的安卓版本并下载。

并下载Extra 包。

(三)下载Eclipse ,这是主要程序。

下载后解压,该软件无需安装可以直接使用。

下载地址:
/downloads/
(四)在Eclipse 中配置ADT 。

首先下载ADT(或直接复制到计算机上),下载地址:
/tools/sdk/eclipse-adt.html
1、打开Eclipse ,首先选择Help →Install New S oftware→Add,其中地址改为本地ADT 的位置。

2、选择 Window→Preferences→Android ,将SDK Location 修改为本地SDK 位置,在列表中出现各个版本的Android 选项。

(五)构建Android 虚拟机。

为了方便开发,可以直接在计算机上虚拟出一个Android 虚拟机。

在Eclipse 中,
选择Window→AVD Manger , 在弹
出的对话框中新建一个Android 虚
拟机。

如图,构建时可以选择此虚拟
机的各项参数。

包括Android 版本,
荧幕分辨率,程序可能用到的硬件,
存储器,以及处理器种类等等。

3. 新建的三个环境变量
4. 在Eclipse 中
ADT 的配置
7. AVD 的配置
如图,为搭建好的虚拟机界
面。

1.2 功能简述
本游戏使用点击屏幕控制小人的移动,如果通关则进入下一关,否则退回正在进行的游戏。

当你走错了,可以点击menu键回退10步。

如果有事退出游戏,可以点击continue来继续上一次的游戏。

在游戏中你可以设置背景音乐是否播放,你也可以参考视频看看怎么操作游戏。

1.3 进度安排
计划一周完成,先完成界面的设计,然后完成音乐视频的实现方法,最后是实现推箱子操作的判断与进度的保存。

1.4 风险预估
随着智能手机的不断发展,其操作系统以及应用软件的复杂度也在不断地提高,手机软件逐渐取代硬件成为智能手机产品的核心竞争力。

所以更需要通过对手机软件进行测试来保证其软件质量。

安卓(Android)操作系统是近几年发展最快,应用范围最广的智能手机操作系统。

在安卓手机软件测试的过程中具有一定的技术特性和工程规律,同时也存在着风险因素。

在软件项目风险管理的研究中,多数只是把软件测试作为开发过程的一个阶段,对其潜在的风险进行的简单的定性分析,或者直接忽略软件测试的过程。

本软件不需要联网,故基本风险很低。

2 系统分析与设计
1、about实现
弹框实现关于推箱子的说明,会用到系统内部的主题。

2、电量显示
电量的toast显示会用到广播接收者,来接受电量变化的广播。

3、e xit退出判断
对话框提醒,首先判断用户所点击的对象是yes还是cancel,如果是yes,保存游戏进度,退出游戏。

如果是cancel则继续游戏。

4、游戏的运行
游戏的界面是一个view视图,获取屏幕的宽与高,从而判断每张图片的大小。

然后根据maplist获取关卡界面,然后将图片转为bitmap资源,绘制地图。

获取用户点击事件,判断人物的位置,人物每走一步,判断所在位置情况,最后判断是否通关。

5、保存进度实现继续或者后退功能。

后退功能实现,得到原始的地图列表,然后获取人物现在所在的位置,比较地图,然后保存最近所走的步数,最多保存10步。

继续功能的实现,用首选项保存地图,行列数,点击继续按钮从首选项中取出参数初始化地图资源。

6、背景音乐设置
Music也是系统对话框主题,使用mediaplayer实现音乐播放,使用preferenceActivity实现单选框编辑
3系统实现
1、about实现
about是一个activity,应用系统对话框主题
<activity
android:name="about"
android:theme="@android:style/Theme.Dialog" >
</activity>
2、电量显示
运用BroadcastReceiver广播接收者来实现
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(intent.ACTION_BATTERY_CHANGED)){ int level=intent.getIntExtra("level", 0);
int total=intent.getIntExtra("scale", 100);
Toast.makeText(context, "当前电量
是:"+(level*100)/total+"%",1).show();
}
}
3、exit退出判断
AlertDialog.Builder dl1 = new AlertDialog.Builder(this);
dl1.setTitle("Warnning!");
dl1.setMessage("Do you want exit?");
dl1.setPositiveButton("yes", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { GameMain.this.finish();
}
});
dl1.setNeutralButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { // 在此,当用户单击cancle按钮,不做任何动作
}
4、游戏的运行
游戏的界面是一个view视图,获取屏幕的宽与高,从而判断每张图片的大小。

private void getMapdetail(){
maprow=map.length;
mapcolumn=map[gate].length;
xoff=30;
yoff=60;
int t=maprow>mapcolumn?maprow:mapcolumn;
int s1=(int) Math.floor((width-2*xoff)/t);
int s2=(int) Math.floor((heith-xoff)/t);
tilesize=s1<s2?s1:s2;//判断最合适的图片大小
tem=MapList.getmap(gate);
}
然后根据maplist获取关卡界面,然后将图片转为bitmap资源,绘制地图。

public void loadPic(int key, Drawable tile) {
Bitmap bitmap=Bitmap.createBitmap(tilesize, tilesize,
Bitmap.Config.ARGB_8888);//创建bitmap地图
Canvas canvas=new Canvas(bitmap);
tile.setBounds(0, 0, tilesize, tilesize);
tile.draw(canvas);
pic[key]=bitmap;//把bitmap赋值给key
}
获取用户点击事件,判断人物的位置
public void getmanposition(){
for(int i=0;i<map.length;i++)
for(int j=0;j<map[0].length;j++)
if(map[i][j]==MAN){
manx=i;
many=j;
break;
}
}
人物每走一步,判断所在位置情况,是向左,还是向右,或者向上,向下public boolean onTouchEvent(MotionEvent event) {
currentx=event.getX();
currenty=event.getY();
float x=(float)(xoff+many*tilesize);
float y=(float)(yoff+manx*tilesize);
if(currenty>y&&(currenty<y+tilesize)){
if(currentx>x+tilesize){
moveRight();
}
if(currentx<x){
moveLeft();
}
}
if(currentx>x&&(currentx<x+tilesize)){
if(currenty>y+tilesize){
moveDown();
}
if(currenty<y){
moveup();
}
}
最后判断是否通关
private boolean finished() {
boolean finish=true;
for(int i=0;i<maprow;i++)
for(int j=0;j<mapcolumn;j++){
if(map[i][j]==GOAL||map[i][j]==BOX)
finish= false;
}
return finish;
}
5、保存进度实现继续或者后退功能。

后退功能实现,得到原始的地图列表,然后获取人物现在所在的位置,比较地图,然后保存最近所走的步数,最多保存10步。

public void back() {
if(list.size()>0){
CurrentMap proMap=list.get(list.size()-1);
map=proMap.getmap();
getmanposition();
list.remove(list.size()-1);
}else{
Toast.makeText(getContext(), "you can't back", 1).show();
}
}
继续功能的实现,用首选项保存地图,行列数,点击继续按钮从首选项中取出参数初始化地图资源。

public String saveGame() {
int[] saved = new int[gameView.maprow * gameView.mapcolumn];
for (int i = 0; i < gameView.maprow; i++)
for (int j = 0; j < gameView.mapcolumn; j++) {
saved[i * gameView.maprow + j] = gameView.map[i][j];
}
StringBuilder buf = new StringBuilder();
for (int element : saved) {
buf.append(element);
}
String s=buf.toString();
return s;
}
String
first="00111000001210000013111111143421123461111111410000012100000111 00";
public int[][]stored;
public void loadMap() {
String mapstring =getPreferences(MODE_PRIVATE).getString("maps", first);
int ii=(int) getPreferences(MODE_PRIVATE).getLong("maprow", 8);
int jj=(int) getPreferences(MODE_PRIVATE).getLong("mapcolumn", 8);
int []maps=new int [mapstring.length()];
for(int i=0;i<maps.length;i++){
maps[i]=mapstring.charAt(i)-'0';
}
stored=new int [ii][jj];
int a=0;
for(int m=0;m<ii;m++)
for(int n=0;n<jj;n++){
stored[m][n]=maps[a];
a++;
}
}
6、背景音乐设置
Music也是系统对话框主题,使用mediaplayer实现音乐播放,使用preferenceActivity实现单选框编辑
<activity
android:name="music"
android:theme="@android:style/Theme.Dialog" >
</activity>
public class music extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.music_setting);
}
public static boolean isMusicCheck(Context context) {
return
PreferenceManager.getDefaultSharedPreferences(context).getBoolean("mu sic", true);
}
}
4 总结与展望
通过本次试验,我获取到了很多关于安卓的知识,并通过网络课程的学习,
了解到了Android系统开发平台的构建,以及新建程序的详细步骤,熟悉了Eclipse等软件的操作和功能,并且了解了JAVA语言。

在实验过程中,我从无到有,一点一点的查阅资料,通过网络学习编程知识,在这个过程中,增强了自学能力和对程序开发的兴趣,并且学习到了更加充分合理地利用网络资源。

5 参考文献
[1]郭宏志.Android应用开发详解电子工业出版社
[2]王世江.Google Android SDK开发范例大全(第2版) 人民邮电出版社
[3]E2ECloud工作室.深入浅出Google Android. 人民邮电出版社
[4]靳岩,姚尚朗. Google Android开发入门与实战人民邮电出版社
[5]王向辉,张国印,沈洁. Android应用程序开发清华大学出版社
[6]汪永松.Android平台开发之旅机械工业出版社
[7]杨丰盛.Android应用开发揭秘机械工业出版社
[8]吴亚峰. Android2.0游戏开发实战宝典人民邮电。

相关文档
最新文档