Android贪吃蛇课程设计报告.doc
《Android贪吃蛇课程设计报告.doc》由会员分享,可在线阅读,更多相关《Android贪吃蛇课程设计报告.doc(36页珍藏版)》请在咨信网上搜索。
1、Android贪吃蛇课程设计报告综 合 实 践 报 告课程名称 计算机系统综合实训 课题名称 贪吃蛇游戏开发 专 业 计算机科学与技术 班 级 学 号 姓 名 指导教师 2015年 12月 20日湖南工程学院课 程 设 计 任 务 书 课程名称 计算机系统综合实训 课 题 贪吃蛇游戏开发 专业班级 计算机1202 学生姓名 学 号 指导老师 审 批 任务书下达日期 2015 年 12月 20 日 任务完成日期 2016年 1月 11日 任务书一、实训的内容(1)设计内容:在屏幕上设计一个贪吃蛇游戏,屏幕四周被绿色苹果包围,中间有贪吃蛇和随机产生的苹果,贪吃蛇的头是黄色的,身子是红色的。玩家按上
2、、下、左、右键盘控制贪吃蛇在屏幕上向上、下、左、右移动,贪吃蛇只能向左、右方向90度转弯,当吃到一个苹果贪吃蛇就长一节,分数加一分,同时屏幕上又随机产生的一个黄色苹果,一旦碰到墙壁或自己的尾巴就失败。提示游戏得到的分数。贪吃蛇游戏规则:游戏初始化:在本游戏中,采用如下的策略进行初始化:将贪吃蛇基本初始化在屏幕的中央,初始移动方向和贪吃蛇节点的排列顺序一致,食物的坐标固定位置。贪吃蛇的移动:除第一个节点以外,其它每个节点跟随前一个节点移动贪吃蛇方向控制:贪吃蛇方向控制需要根据玩家的按键改变贪吃蛇的方向变量,在改变时需要注意,不能改变为当前方向的相反方向,例如当前方向是向下时,按向上的方向键是无效
3、的。(2) 设计要求:按任务书的设计要求进行撰写。其中游戏核心数据结构设计要求为:主要是界面控制信息和逻辑控制信息, 界面控制信息主要包含两个部分:贪吃蛇的位置信息,存储贪吃蛇的具体位置,另外一个就是闪烁的食物的位置。而逻辑控制信息主要包含三个部分:贪吃蛇的移动方向、闪烁控制以及程序暂停控制。碰撞和处理,包括贪吃蛇和食物的碰撞和处理,贪吃蛇和四周的碰撞和处理,贪吃蛇的头和身的碰撞和处理,二、综合实训时间安排具体时间及要求安排如下:综合实训时间为1718周,包括上机与查资料。17周安排(12月28日开始)星期一(12月28日)上午星期二(12月29日)下午星期三(12月30日)上午星期四(12月
4、31日)上午第18周星期一至星期三上午 风华科技老师来校讲课星期三下午去九华参观星期四至星期五,卓京来校讲课三、综合实训报告撰写要求正文的内容:1、课程实训目的及要求;2、设计思路(需求分析、功能介绍、模块划分);3、主要功能的实现(至少要有一个主要模块的流程图);4、程序调试;5、总结;6、附件(所有程序的源代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)附:课程实训报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。目录一、课程实训目的及要求
5、1、课程实训目的1、课程实训要求1二、设计思路1、需求分析1、游戏界面分析1、游戏角色分析1、游戏控制分析2、可行性分析2、功能介绍2、模块划分3、系统功能模块层次3、运行机制4三、主要功能的实现5、功能流程图 5四、程序调试6、功能测试6、测试结果6五、总结6六、 附件8、源代码8一、课程实训目的及要求、课程实训目的计算机系统综合实训能培养学生独立进行资料收集,综合运用所学的多门课程知识,培养分析问题和解决问题能力。验证和巩固充实所学理论知识,加深对相关内容的理解,能运用所学知识为社会服务,在实训中学习和锻炼,增长才干。本次实训采用项目制,要求学生进一步理解和掌握软件工程的方法和技术,培养合
6、作意识、团队精神和技术文档的编写能力。为了让同学们更好地了解3G的目前应用情况,我们将邀请风华科技和卓京老师进行五天实训培训。、课程实训要求实训要求采用“项目小组”的形式,结合具体的开发项目进行设计。具体要求如下:9人,项目小组成员自行组织。,按时完成每部分工作。#和512#机房进行。二、设计思路、需求分析、游戏界面分析操作界面应该人性化设计,提示玩家按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为网格,还应设计蛇的样式,食物的样式和墙的样式,在蛇吃到食物后的样式,还有游戏结束时的界面显示,游戏结束后,要显示所得的分数。、游戏角色分析设置游戏贪吃蛇初
7、始时由固定小矩形块组成,在游戏中,要随机出现由单个矩形块构成的食物,并且设置随机出现的食物不要出现在蛇的身体中,在蛇吃到食物的时候,蛇的身体加长。此外,要判定游戏成功与失败的条件,当蛇的头和尾相撞或者蛇的头部撞到了墙上,则游戏失败,此时游戏结束,界面显示所得分数。另外蛇的移动原理,由外部按键设置监听控制蛇头的移动方向,在方向的指引下进行移动,蛇及食物的位置都是由坐标数组确定的,食物的位置也是随机产生的蛇的移动原理是后一矩形块覆盖前一个矩形块。当一个食物被吃掉的时候,要自动随机生成并显示下一个食物的位置。这些都是在设计过程中需要实现的。、游戏控制分析游戏中需要通过按键对蛇的移动方位进行控制,共需
8、要设置四个方位,分别是“东”“西”“南”“北”,在按键上用“上”“下”“左”“右”,按键与执行部分涉及到监听,通过监听指示蛇的运动,此外,要设置蛇移动是的默认方向为“右”,蛇的移动只能是90度偏转,不能进行180度偏转。此外还要设置游戏的状态,有运行和结束两种状态,蛇体变长的时候用静态变量进行加分。、可行性分析 贪吃蛇游戏是一种简单的大众的游戏,自从进入现代化以来,深受广大电脑和玩家的喜爱,所以做一个简单的贪吃蛇小游戏是有用的。本次设计我主要运用Java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。由于
9、Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。、功能介绍贪吃蛇游戏是一款游戏,同时也是一款比较需要耐心的游戏。贪吃蛇游戏是一条蛇,不停地在屏幕上游走,吃在屏幕上出现的食物。当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命。:系统功能模块层次图、运行机制任何游戏都需要有个引擎来推动游戏的运行,在贪吃蛇这个游戏中,辅助类 MyHandler继承自 Handler,用来把 M
10、yHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。注意一点: Handle对消息的处理都是异步。 MyHandler在 Handler的基础上增加 sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面。update()与 sleep()间接的相互调用就构成了一个循环。由于 sleep()是个异步函数,所以 update()与 sleep()之间的相互调用才没有构成死循环。:运行机制三、主要功能的实现 、功能流程图 开始始初化蛇和食物屏幕显示蛇和食物位置蛇开始移动,后坐标覆盖前坐标是否有
11、按键否根据上次方向更新坐标是根据按键不同在原坐标基础上改变蛇的坐标位置更新方向是否吃到食物是蛇身加1否是否越界或撞到蛇身是游戏结束否:功能流程图四、程序调试、功能测试经过在模拟器上的测试,本软件能实现其功能,达到了小蛇在屏幕上的移动,小蛇吃食物,食物随机出现的功能,当小蛇头尾相撞或与墙相撞时,。 :运行时截图、测试结果通过对游戏软件的功能测试,控制测试和界面测试。对游戏的开始新游戏、退出和统计分数功能进行测试,并测试程序的键盘点击事件,结论是该游戏软件能正确实现功能要求。要求输出的效果与预期的输出效果完全一致。五、总结 本次Java课程设计我们这组做的课题是设计贪吃蛇游戏,刚开始拿到题目我们组
12、员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。实验过程中,首先要将系统要实现的功能分为几大模块,然后每个组员分别完成,在此过程中使我加深了对Java的理解,以及如何进行团队工作的划分,学会发现各组员的长处并将其发挥出来。虽然大家没怎么学过Java,但大家都有C语言基础,所以通过努力实验,进一步培养我们利用Java语言进行编程和调试程序的能力,同时使我们能够学会将C语言与Java语言结合起来编写较复杂具有实际意义和算法复杂度较小的程序。与此同时熟练掌握Java语言的编辑,编译,调试程序,并
13、将算法转变为程序实现。正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。掌握算法的时间分析和空间分析的技术。针对问题的特点选择合适的数据结构,设计实用高效的算法,提高大家的算法设计的能力和动手实验的技能。六、附件、源代码SnakeActivity类:程序的入口,程序的界面。代码如下:package ;import ;import ;public class SnakeActivity extends Activity Overrideprotected void onCreate(Bundle savedInstanceState) (savedInstanceState);set
14、ContentView();().addActivity(this);MyTile类:MyTile的基类是View,包含了贪吃蛇游戏画面的各个设定参数,主要负责绘制游戏画面。还定义了游戏运行时的画面改变及蛇体和食物的更新方法。MyTile类定义如下:package ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;SuppressLint(DrawAllocation)public class MyTil
15、e extends View private int size = 12; / 图片大小private int xCount; / 横向格子private int yCount; / 纵向格子private int xOffset; / 原点坐标private int yOffset; / 原点坐标private int map; / 地图数组private Bitmap pics; / 图片数组private static final int GERRN_STAR = 1; / 绿色图片private static final int RED_STAR = 2; / 红色图片private
16、static final int YELLOW_STAR = 3; / 黄色图片public static final int UP = 1; / 键盘上public static final int RIGHT = 2; / 键盘右public static final int DOWN = 3; / 键盘下public static final int LEFT = 4; / 键盘左public int direction; / 方向private static final Random RANDOM = new Random();/ 随机变量private ArrayList snake
17、List = new ArrayList();/ 蛇身数组private ArrayList appleList = new ArrayList();/ 苹果数组private MyHandler handler = new MyHandler();/ 线程 /private TextView snakeView;private Context myTileContext;private int isContinue=0;/停止游戏public static long score=0;/游戏分数/ 从布局文件读取图片public MyTile(Context context, Attribut
18、eSet attrs) super(context, attrs);(MyTile(Context context, AttributeSet attrs) );myTileContext=context;setFocusable(true);/ TODO Auto-generated constructor stub/ 绘图方法 Canvas:画布Overrideprotected void onDraw(Canvas canvas) / TODO Auto-generated method stub(canvas);(onDraw(Canvas canvas) );Paint myPain
19、t = new Paint();/ 生成一个画笔/ 循环绘制墙for (int x = 0; x xCount; x+) for (int y = 0; y 0) / 判断已赋值的地图数组/ mapxy=1/ 绘制墙(picsmapxy,/ picsmapxy=1 /绿色xOffset + x * size, yOffset + y * size, myPaint);/ 屏幕发生变化时自动执行/屏幕的宽和高,在程序一开始就获取屏幕的宽和高。Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) / TODO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 贪吃 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。