安卓大作业―围住神经猫小游戏

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《移动终端应用开发》大作业报告书题目:围住神经猫小游戏专业:计算机科学与技术学号:学生姓名:××指导教师:叉叉叉完成日期:2016-5-31目录一、需求分析----------------------------错误!未定义书签。二、系统功能描述------------------------错误!未定义书签。三、系统概要设计----------------------------------------23.1功能模块设计--------------------------------------23.1.1程序流程图-----------------------------------23.1.2程序模块设计---------------------------------23.1.3界面功能详细设计------------------------------3四、系统主要代码----------------------------------------4五、总结-----------------------------------------------175.1开发中遇到的问题---------------------------------175.2系统有待实现的功能-------------------------------175.3收获总结-----------------------------------------18六、参考文献-------------------------------------------181一需求分析安卓游戏已经是大势所趋,开发安卓游戏也将是游戏开发者的重中之重,所以我选择试做一个安卓小游戏来作为我的android课程大作业。围住神经猫是一款益智类的小游戏,它可以在人们生活烦躁工作无聊之时提高一种新的打发时间、舒缓压力的休闲方式,也可以锻炼人的逻辑思维能力、判断力和观察力。首先我们从游戏界面开始分析,一开始是游戏欢迎界面,点击“开始游戏”,就可以切换到游戏界面,开始玩游戏了。在游戏界面中,有游戏背景,还有神经猫在移动时的样式,并把神经猫可移动的范围以坐标的方式分为若干个点。游戏结束时会对玩家进行提示,若玩家成功围住神经猫则显示玩家所用的步数。然后是对神经猫这个游戏控制的分析,神经猫可移动的范围是9×9,我设置神经猫的初始位置是固定的,但是系统在游戏一开始生成的路障是随机的,一共是16个路障,之后玩家将根据游戏的情况对神经猫进行堵截,当玩家每选择一个点作为自己想设置的路障时,那个点将改变为橘色,而神经猫将根据可选择的路径自动移动到下一个地点,当神经猫移动到任意一个边缘时,游戏会提示玩家失败,当玩家成功围住神经猫时,游戏会提示玩家成功且会显示出玩家所用的步数。这个游戏要用到二维数组,把神经猫可以移动的范围进行记录,还必须要对神经猫的移动方式进行设置,还有每个点不同状态的转换,路障的自动生成,还有对玩家所用步数的统计,这个游戏所要用到的主要软件是Eclipse、ADT,它的主要语言是java,操作系统是windows7.二系统功能设计项目具体功能描述如下:1)游戏开始界面:有比较搞笑的背景图来吸引玩家,然后点击开始游戏,切换到游戏界面2)游戏界面:神经猫一开始在游戏的正中间,平且还有系统随机生成的16个路障,范围是9×9的空间里,并且把它分成了点,玩家在点上设置好路障后,神经猫会在看选取的路径中随机选取一2条,并移动到下一个点,直至游戏结束。3)游戏结束界面:当神经猫移动到任意边缘时,会显示通关失败的提示;但玩家成功围住神经猫时,则显示成功通关页面,并且统计了玩家所用的步数。三项目概要设计3.1功能模块设计(1)程序流程图根据用户需求,本软件程序流程图如下:成功通关失败通关再来一次图1.程序流程图(2)程序模块设计启动程序游戏开始界面游戏界面通关失败界面通关界面3为了提高代码的重复利用率,程序设计时自定义了以下几个类:①自定义坐标类(Dot):每一个点都是一个抽象的对象,需要把每一个点抽象为一个类,然后让每一个圆圈继承于这个类。②自定义绘制布局类(playground):继承surfaceview,将制定的绘图呈现在surfaceview上,界面的响应和绘制都在surfaceview上完成的。③自定义实现接口(OnTouchListener):为了界面的点击做出响应。(3)界面功能详细设计各界面功能详尽介绍如下:1)游戏开始界面(图1:homepage):打开程序首先显示游戏开始界面,通过点击开始游戏,马上自动跳转到游戏界面图(homepage2)图1:homepage2)游戏界面(图2:homepage2):进入到游戏界面以后,就可以正式开始游戏啦玩家开始对神经猫进行围追截堵4图2:homepage23)游戏结束界面(图3:homepage3、图4:homepage4):若玩家成功围住神经猫则显示图3,若失败则显示图4图3:homepage3图4:homepage45四项目主要代码系统实现相应功能的主要代码如下:记录每个场景中的元素它的X,Y坐标点的状态:packagecom.example.crazycat;publicclassDot{//记录每个场景中的元素它的X,Y坐标点的状态。并不会直接参与界面的响应和界面的绘制privateintx,y;privateintstatus;//记录这个点的状态publicstaticfinalintSTATUS_OFF=-1;//代表可走的路径publicstaticfinalintSTATUS_IN=0;//猫的当前位置publicstaticfinalintSTATUS_ON=1;//已经设置的路障//指定x,y的坐标publicDot(intx,inty){this.x=x;this.y=y;this.status=STATUS_OFF;}//指定geter和sette方法publicintgetX(){returnx;}publicvoidsetX(intx){this.x=x;}publicintgetY(){returny;}publicvoidsetY(inty){6this.y=y;}publicintgetStatus(){returnstatus;}publicvoidsetStatus(intstatus){this.status=status;}//同时设置x。y的方法publicvoidsetXY(intx,inty){this.x=x;this.y=y;}}Playground类的实现:packagecom.example.crazycat;importjava.util.HashMap;importjava.util.Timer;importjava.util.TimerTask;importjava.util.Vector;importandroid.annotation.SuppressLint;importandroid.app.AlertDialog;importandroid.app.AlertDialog.Builder;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.RectF;importandroid.graphics.drawable.Drawable;importandroid.view.KeyEvent;importandroid.view.MotionEvent;importandroid.view.SurfaceHolder;importandroid.view.SurfaceHolder.Callback;importandroid.view.SurfaceView;importandroid.view.View;importandroid.view.View.OnClickListener;7importandroid.view.View.OnTouchListener;importandroid.widget.Toast;publicclassPlayGroundextendsSurfaceViewimplementsOnTouchListener{//界面的响应和界面的绘制在SurfaceView完成,触摸事件的响应通过OnTouchListener接口实现//行数privatestaticfinalintROW=9;//列数privatestaticfinalintCOL=9;//障碍的数量privatestaticfinalintBOCKS=COL*ROW/5;//屏幕宽度去privateintSCREEN_WIDTH;//每个通道的宽度privateintWIDTH;//奇数行和偶数行通道间的位置偏差量privateintDISTANCE;//屏幕顶端和通道最顶端间的距离privateintOFFSET;//整个通道与屏幕两端间的距离privateintlength;//做成神经猫动态图效果的单张图片privateDrawablecat_drawable;//背景图privateDrawablebackground;//神经猫动态图的索引privateintindex=0;privateDot[][]matrix;privateDotcat;privateTimertimer=null;privateTimerTasktimerttask=null;privateContextcontext;privateintsteps;privateint[]images={R.drawable.cat1,R.drawable.cat2,R.drawable.cat3,8R.drawable.cat4,R.drawable.cat5,R.drawable.cat6,R.drawable.cat7,R.drawable.cat8,R.drawable.cat9,R.drawable.cat10,R.drawable.cat11,R.drawable.cat12,R.drawable.cat13,R.drawable.cat14,R.drawable.cat15,R.drawable.cat16};@SuppressLint(ClickableViewAccessibility)publicPlayGround(Contextcontext){super(context);//使用Context创建当前类构造函数matrix=newDot[ROW][COL];//将行高,列宽传递进去,指定数组大小cat_drawable=getResources().getDrawable(images[index]);background=getResources().getDrawable(R.drawable.bg);this.context=context;initGame();//调用游戏初始化getHolder().addCallback(callback);//将Callback对象指定给getholdersetOnTouchListener(this);//设定为自己的触摸监听器this.setFocusable(true);this.setFocusableInTouchMode(true);}@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK){stopTimer();}returnsuper.onKeyDown(keyCo

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功