首页 Android贪吃蛇课程设计报告

Android贪吃蛇课程设计报告

举报
开通vip

Android贪吃蛇课程设计报告PAGE/NUMPAGES####学院计算机科学系《Android程序设计》课程设计报告题目:贪吃蛇专业:计算机科学与技术班级:B11计科班20##6月目录TOC\o"1-3"\h\z\uHYPERLINK\l_Toc27456第一章绪论PAGEREF_Toc274562HYPERLINK\l_Toc184521.1游戏简介PAGEREF_Toc184522HYPERLINK\l_Toc15091.2开发目的与意义PAGEREF_Toc15093HYPERLIN...

Android贪吃蛇课程设计报告
PAGE/NUMPAGES####学院计算机科学系《Android程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 》课程设计 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 题目:贪吃蛇专业:计算机科学与技术班级:B11计科班20##6月目录TOC\o"1-3"\h\z\uHYPERLINK\l_Toc27456第一章绪论PAGEREF_Toc274562HYPERLINK\l_Toc184521.1游戏简介PAGEREF_Toc184522HYPERLINK\l_Toc15091.2开发目的与意义PAGEREF_Toc15093HYPERLINK\l_Toc19121.3开发环境与工具PAGEREF_Toc19123HYPERLINK\l_Toc27094第二章需求分析PAGEREF_Toc270944HYPERLINK\l_Toc12562.1游戏界面分析PAGEREF_Toc12564HYPERLINK\l_Toc181442.2游戏角色分析PAGEREF_Toc181444HYPERLINK\l_Toc313212.3游戏控制分析PAGEREF_Toc313214HYPERLINK\l_Toc6911第三章总体设计PAGEREF_Toc69115HYPERLINK\l_Toc210683.1系统功能模块层次图PAGEREF_Toc210685HYPERLINK\l_Toc167253.2运行机制PAGEREF_Toc167256HYPERLINK\l_Toc213423.3贪吃蛇功能 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图PAGEREF_Toc213427HYPERLINK\l_Toc26120第四章详细设计与实现PAGEREF_Toc261209HYPERLINK\l_Toc248764.1SnakeActivity类PAGEREF_Toc248769HYPERLINK\l_Toc281704.2MyTile类PAGEREF_Toc2817010HYPERLINK\l_Toc177944.3NextActivity类PAGEREF_Toc1779418HYPERLINK\l_Toc66714.4SysApplication类PAGEREF_Toc667119HYPERLINK\l_Toc194484.5界面设计PAGEREF_Toc1944820HYPERLINK\l_Toc9789第五章测试PAGEREF_Toc978926HYPERLINK\l_Toc29105.1功能测试PAGEREF_Toc291026HYPERLINK\l_Toc297895.4测试结果PAGEREF_Toc2978927HYPERLINK\l_Toc21418第六章结论PAGEREF_Toc2141827第一章绪论1.1游戏简介贪吃蛇游戏是一款手机游戏,同时也是一款比较需要耐心的游戏。贪吃蛇游戏是一条蛇,不停地在手机屏幕上游走,吃在手机屏幕上出现的食物。当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命。1.2开发目的与意义通过本次课程设计,了解android软件的开发过程,熟悉并掌握JAVA语言,程序关键在于表示蛇的图形与蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用一节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动。意义是方便人们在休闲时通过玩手机游戏获得一点快乐,同时锻炼自己的大脑。1.3开发环境与工具在Window8下进行,采用eclipse开发工具,基于安卓2.2操作系统。环境搭建:1.JDK安装2.Eclipse安装3.AndroidSDK安装4.ADT安装创建AVD第二章需求分析2.1游戏界面分析操作界面应该人性化设计,提示玩家按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为网格,还应设计蛇的样式,食物的样式和墙的样式,在蛇吃到食物后的样式,还有游戏结束时的界面显示,游戏结束后,要显示所得的分数。2.2游戏角色分析设置游戏贪吃蛇初始时由固定小矩形块组成,在游戏中,要随机出现由单个矩形块构成的食物,并且设置随机出现的食物不要出现在蛇的身体中,在蛇吃到食物的时候,蛇的身体加长。此外,要判定游戏成功与失败的条件,当蛇的头和尾相撞或者蛇的头部撞到了墙上,则游戏失败,此时游戏结束,界面显示所得分数。另外蛇的移动原理,由外部按键设置监听控制蛇头的移动方向,在方向的指引下进行移动,蛇与食物的位置都是由坐标数组确定的,食物的位置也是随机产生的蛇的移动原理是后一矩形块覆盖前一个矩形块。当一个食物被吃掉的时候,要自动随机生成并显示下一个食物的位置。这些都是在设计过程中需要实现的。2.3游戏控制分析游戏中需要通过按键对蛇的移动方位进行控制,共需要设置四个方位,分别是“东〞“西〞“南〞“北〞,在按键上用“上〞“下〞“左〞“右〞,按键与执行部分涉与到监听,通过监听指示蛇的运动,此外,要设置蛇移动是的默认方向为“右〞,蛇的移动只能是90度偏转,不能进行180度偏转。此外还要设置游戏的状态,有运行和结束两种状态,蛇体变长的时候用静态变量进行加分。2.4可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从进入现代化以来,深受广大电脑和手机玩家的喜爱,所以做一个简单的贪吃蛇小游戏是有用的。  本次设计我主要运用Java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。  由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。第三章总体设计3.1系统功能模块层次图工程中包括4个类,分别为SnakeActivity〔主界面〕、MyTile〔游戏界面〕、NextActivity〔游戏结束界面〕和SysApplication类,通过不同Activity之间的转换实现不同界面之间的切换。SnakeActivity和NextActivity继承了Activity类,MyTile类继承了View类,SysApplication类继承了Application类。SnakeActivity类是这个游戏的入口点,MyTile类进行游戏的绘画和对游戏控制操作的处理。Coordinate,MyHandler是2个辅助类,是MyTile类中的内部类。其中,Coordinate是一个点的坐标(x,y),MyHandler将MyHandler对象绑定某个线程并给它发送消息。如下图:类图3.2运行机制任何游戏都需要有个引擎来推动游戏的运行,在贪吃蛇这个游戏中,辅助类MyHandler继承自Handler,用来把MyHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。注意一点:Handle对消息的处理都是异步。MyHandler在Handler的基础上增加sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面。update()与sleep()间接的相互调用就构成了一个循环。由于sleep()是个异步函数,所以update()与sleep()之间的相互调用才没有构成死循环。运行机制如下:活动图3.3贪吃蛇功能流程图开始始初化蛇和食物屏幕显示蛇和食物位置蛇开始移动,后坐标覆盖前坐标是否有按键否根据上次方向更新坐标是根据按键不同在原坐标基础上改变蛇的坐标位置更新方向是否吃到食物是蛇身加1否是否越界或撞到蛇身是游戏结束否详细设计与实现4.1SnakeActivity类程序的入口,程序的界面。代码如下:package.daYu.mysnake;importandroid.app.Activity;importandroid.os.Bundle;publicclassSnakeActivityextendsActivity{OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_snake);SysApplication.getInstance().addActivity(this);}}4.2MyTile类MyTile的基类是View,包含了贪吃蛇游戏画面的各个设定参数,主要负责绘制游戏画面。还定义了游戏运行时的画面改变与蛇体和食物的更新方法。MyTile类定义如下:package.daYu.mysnake;importjava.util.ArrayList;importjava.util.Random;importandroid.annotation.SuppressLint;importandroid.content.Context;importandroid.content.Intent;importandroid.content.res.Resources;importandroid.graphics.Bitmap;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.graphics.drawable.Drawable;importandroid.os.Handler;importandroid.os.Message;importandroid.util.AttributeSet;importandroid.view.KeyEvent;importandroid.view.View;SuppressLint("DrawAllocation")publicclassMyTileextendsView{privateintsize=12;//图片大小privateintxCount;//横向格子privateintyCount;//纵向格子privateintxOffset;//原点坐标privateintyOffset;//原点坐标privateint[][]map;//地图数组privateBitmap[]pics;//图片数组privatestaticfinalintGERRN_STAR=1;//绿色图片privatestaticfinalintRED_STAR=2;//红色图片privatestaticfinalintYELLOW_STAR=3;//黄色图片publicstaticfinalintUP=1;//键盘上publicstaticfinalintRIGHT=2;//键盘右publicstaticfinalintDOWN=3;//键盘下publicstaticfinalintLEFT=4;//键盘左publicintdirection;//方向privatestaticfinalRandomRANDOM=newRandom();//随机变量privateArrayListsnakeList=newArrayList();//蛇身数组privateArrayListappleList=newArrayList();//苹果数组privateMyHandlerhandler=newMyHandler();//线程//privateTextViewsnakeView;privateContextmyTileContext;privateintisContinue=0;//停止游戏publicstaticlongscore=0;//游戏分数//1从布局文件读取图片publicMyTile(Contextcontext,AttributeSetattrs){super(context,attrs);System.out.println("*********MyTile(Contextcontext,AttributeSetattrs)*********");myTileContext=context;setFocusable(true);//TODOAuto-generatedconstructorstub}//绘图方法Canvas:画布OverrideprotectedvoidonDraw(Canvascanvas){//TODOAuto-generatedmethodstubsuper.onDraw(canvas);System.out.println("********onDraw(Canvascanvas)********");PaintmyPaint=newPaint();//生成一个画笔//循环绘制墙for(intx=0;x0){//判断已赋值的地图数组/map[x][y]=1/绘制墙canvas.drawBitmap(pics[map[x][y]],//pics[map[x][y]]=1/绿色xOffset+x*size,yOffset+y*size,myPaint);}}}}//2屏幕发生变化时自动执行/屏幕的宽和高,在程序一开始就获取屏幕的宽和高。OverrideprotectedvoidonSizeChanged(intw,inth,intoldw,intoldh){//TODOAuto-generatedmethodstubsuper.onSizeChanged(w,h,oldw,oldh);System.out.println("********onSizeChanged(intw,inth,intoldw,intoldh)********");xCount=(int)Math.floor(w/size);//四舍五入/取整/x轴格子总数yCount=(int)Math.floor(h/size);//四舍五入/取整/y轴格子总数xOffset=(w-xCount*size)/2;//原点坐标yOffset=(h-yCount*size)/2;//原点坐标map=newint[xCount][yCount];//地图总格子initGame();//初始化游戏}//初始化游戏publicvoidinitGame(){System.out.println("********initGame()********");snakeList.clear();//清空蛇appleList.clear();//清空食物score=1000000000;//初始化分数pics=newBitmap[4];//实例化图片数组Resourcesresources=getContext().getResources();//获取资源loadPic(GERRN_STAR,resources.getDrawable(R.drawable.greenstar));//加载图片loadPic(RED_STAR,resources.getDrawable(R.drawable.redstar));loadPic(YELLOW_STAR,resources.getDrawable(R.drawable.yellowstar));snakeList.add(newCoordinate(5,7));snakeList.add(newCoordinate(4,7));snakeList.add(newCoordinate(3,7));snakeList.add(newCoordinate(2,7));direction=RIGHT;//蛇的默认方向:右addRandomApple();//生成一个随机位置的苹果update();//实现重绘一次}//加载图片publicvoidloadPic(intkey,Drawabledrawable){System.out.println("********loadPic(intkey,Drawabledrawable)********");Bitmapbitmap=Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);//图片大小Canvascanvas=newCanvas(bitmap);//画布drawable.setBounds(0,0,size,size);//设置位置大小drawable.draw(canvas);pics[key]=bitmap;}publicvoidupdate(){System.out.println("*********update()*********");clearTile();//清空buildWall();//重绘墙updateSnake();//更新蛇updateApple();//更新苹果handler.sleep(200);}publicvoidclearTile(){System.out.println("*********clearTile()*********");for(intx=0;xxCount-2||newHeader.y>yCount-2){gameOver();return;}//冲突检测新蛇头是否和自身坐标重叠,重叠的话游戏也结束intsnakelength=snakeList.size();for(intsnakeindex=0;snakeindexmList=newLinkedList();privatestaticSysApplicationinstance;privateSysApplication(){}publicsynchronizedstaticSysApplicationgetInstance(){if(null==instance){instance=newSysApplication();}returninstance;}//addActivitypublicvoidaddActivity(Activityactivity){mList.add(activity);}publicvoidexit(){try{for(Activityactivity:mList){if(activity!=null)activity.finish();}}catch(Exceptione){e.printStackTrace();}finally{System.exit(0);//最终执行}}}4.5界面设计界面设计包括游戏主界面、游戏结束界面的设计。界面的设计采用的是xml文档形式,在xml文档中规划好界面布局布局后,分别在java文件中声明。〔1〕游戏主界面,主界面采用线性布局设定,指定自定义的控件。其activity_snake.xml文档如下:游戏结束界面,其nextactivity.xml文档定义如下:""界面设计完成,但还有最重要的一步,就是将所有的Activity注册到AndroidManifest.xml中。AndroidManifest.xml文档如下: ppt 关于艾滋病ppt课件精益管理ppt下载地图下载ppt可编辑假如ppt教学课件下载triz基础知识ppt heme">第五章测试5.1功能测试经过在模拟器上的测试,本软件能实现其功能,达到了小蛇在屏幕上的移动,小蛇吃食物,食物随机出现的功能,当小蛇头尾相撞或与墙相撞时,游戏结束.这些均在测试中得到验证。游戏时〔2〕结束时5.4测试结果通过对游戏软件的功能测试,控制测试和界面测试。对游戏的开始新游戏、退出和统计分数功能进行测试,并测试程序的键盘点击事件,结论是该游戏软件能正确实现功能要求。要求输出的效果与预期的输出效果完全一致。第六章结论这次Android课程设计让我重新熟悉了Android工程的框架与设计的步骤,以与每个文件的作用,稍微掌握了一些View类的方法,同时也学到了更多的界面设计的方法,比如如何自定义视图等。在学习、使用Java的过程中,进一步在总体上让我对编程语言有了新的认识。在设计、调试、修改的过程当中,我对程序的设计与构架在整体上有了进步。这次通过做Android课程设计,我完成了小游戏贪吃蛇的任务。在整个过程中遇到了一些问题,如蛇头怎样移动,蛇的尾巴怎样跟着移动,还有在默认情况下怎样让蛇自行移动、时间处理的机制和界面的设计问题,但最终部分被解决了,还有一些自己想到的功能,已经去做了但还是出现问题,还没能做出来,如暂停游戏、完成游戏获得分数、存档、游戏排名、蛇无效方向处理和加快蛇移动速度等,后面有时间的话,在继续深入把没有完成的功能做出来。在这一次的课设过程中,我查阅了相关的资料,对Android有了进一步的认识,希望以后可以用Android做出一款大型软件,而不只是小游戏。Android让我比较头疼的是有些只是知道代码的作用,却不是很清楚硬件的工作原理,还有遇到一些问题就想放弃了,这是我今后要克服的。通过这次编程,还让我认识到了自己的不足,在编程方面,我发现自己是刚刚入门,对代码还不是很熟悉,需要我不断的充实自己,这样才能在程设计方面有所收获。参考文献[1]Android应用开发教程.清华大学,2013
本文档为【Android贪吃蛇课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_529050
暂无简介~
格式:doc
大小:737KB
软件:Word
页数:25
分类:其他高等教育
上传时间:2022-05-05
浏览量:0