




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全套设计加扣 3012250582湖南软件职业学院毕业设计毕业选题: 基于Android系统的贪吃蛇游戏 指导教师: 学生姓名: 院系名称: 软件工程系 专业班级: Java 1304 学生学号: 提交日期: 2015年12月19号 湖南软件职业学院毕业设计(作业)目 录第1章 绪 论- 1 -1.1 Android简介- 1 -1.1.1 Android的来源及发展- 1 -1.1.2 Android系统的特点- 2 -1.2 项目目的与意义- 3 -1.2.1 开发目的- 3 -1.2.2 开发意义- 4 -1.3 国内外现状分析- 4 -1.3.1 国内外手机系统现状- 4 -1.3.2 国内外手机应用现状- 5 -1.3.3 发展趋势- 6 -第2章 方案论证- 8 -2.1 经济可行性分析- 8 -2.2 技术可行性分析- 8 -2.2.1 Android平台特性- 8 -2.2.2 Android平台架构- 9 -2.2.3 Android应用程序组件- 9 -2.3 本项目的开发方法- 11 -2.4 开发工具及环境简介- 12 -2.4.1 开发工具Eclipse简介- 12 -2.4.2 开发环境简介- 13 -第3章 需求分析- 15 -3.1 系统开发目标- 15 -3.2 系统需求分析- 15 -3.2.1 业务需求分析- 15 -3.2.2 用户需求分析- 16 -3.2.3 功能需求分析- 17 -第4章 贪吃蛇详细设计- 18 -4.1 程序流程设计- 18 -4.2 概要设计- 18 - 4.2.1 模块划分- 18 - 4.2.2 游戏主界面模块- 18 - 4.2.3 游戏控制模块- 19 -4.3 模块实现原理- 20 - 4.3.1 游戏界面模块实现- 20 - 4.3.2 游戏控制模块实现- 21 - 4.3.3 TileView类的设计- 22 - 4.3.4 worm类的设计- 22 -4.4 程序主结构- 23 -4.5 程序类图- 24 -4.6 类的详细设计- 25 -4.6.1 worm类的详细设计- 25 -4.6.2 wall类的详细设计- 27 -4.6.3 mainactivity类的详细设计- 28 -第5章 系统测试与结果分析- 31 -5.1 软件测试- 31 -5.1.1 测试的基本概念- 31 -5.1.2 测试的步骤- 32 -5.2 系统测试- 32 -参考文献- 36 -致 谢- 37 -附 录- 38 -iiii全套设计加扣 3012250582第1章 绪 论随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian,Windows Mobile,PalmOS等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开放性很强的平台。经过多年的发展,第三代数字通信(3G)技术获得了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于2007年11月推出了一个专为移动设备设计的软件平台Android。Android是一套真正意义上的开放性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android是由Linux+Java构成的开源软件,允许所有厂商和个人在其基础上进行开发。Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定自己的特色化的产品。因此,它具有很大的市场发展潜力。 1.1 Android简介1.1.1 Android的来源及发展本项目在Android平台下,使用java语言、Android开发技术开发一款界面友好,功能齐全的贪食蛇游戏。贪食蛇是一款老牌的手机游戏,同时也是一款比较需要耐心的游戏,用游戏控制方向键上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,更不能咬自己的尾巴,当蛇头碰到墙或者自己的身体则游戏结束。Android一词本意是指机器人,同时也指Google于2007年11月5日推出的开源手机操作系统。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它是由一个由 30 多家科技公司和手机公司组成的开放手机联盟共同研发,将大大降低新型手机设备的研发成本,完全整合的全移动功能性产品成为开放手机联盟的最终目标。Android 作为谷歌移动互联网战略的重要组成部分,将进一步推进随时随地为每个人提供信息这一企业目标的实现。全球为数众多的移动电话用户从未使用过任何基Android 的电话。谷歌的目标是让移动通讯不依赖于设备,甚至是平台。出于这个目的,Android 将完善,而不是会替代谷歌长期以来推行的移动发展战略:通过与全球各地的手机制造商和移动运营商成为合作伙伴,开发既实用又有吸引力的移动服务,并推广这些产品。Android平台的研发队伍阵容强大,包括Google、HTC(宏达电)、T-Mobile、高通、摩托罗拉、三星、LG以及中国移动在内的30多家企业都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。开放手机联盟表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动服务。同时,开发商也将得到一个新的开放级别,更方便地进行协同合作,从而保障新型移动设备的研发速度。因此Android 是第一个完整、开放、免费的手机平台。1.1.2 Android系统的特点Android系统具有如下4个特点。1. 开放性Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。2. 应用程序无界限Android 上的应用程序可以通过标准 API 访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。应用程序是在平等的条件下创建的,所以移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件;应用程序可以轻松地嵌入 HTML、Javascript 和样式表。应用程序可以通过 WebView 显示网络内容。3. 应用程序可以并行运行 Android 是一种完整的多任务环境,其中应用程序可以并行运行。在后台运行时,应用程序可以生成通知以引起注意。4. 智能虚拟键盘虚拟键盘的出现意味着基于Android 1.5的移动设备可以同时支持物理键盘和虚拟键盘。不同的输入方式可满足用户在特定场景的需求。Android虚拟键盘可以在任何的应用中提供,包括Gmail、浏览器、SMS,当然也包括大量的第三方应用。它包括自动校正、推荐、习惯文字的用户词典。你可以通过振动屏幕来进行触觉反馈。不同于竞争对手的手机平台,Android 1.5还支持第三方虚拟键盘应用的安装。1.2 项目目的与意义1.2.1 开发目的自2007年Google发布Android系统1.0之后,各大手机生产厂商纷纷将目光投向了最具发展潜力的Android系统,并陆续推出了各种品牌的搭载Android系统的智能手机。时隔四年,Android手机在手机市场中占的市场份额正以非常迅猛的速度上升:2010年市场份额:Symbian 36.6%、Android 25.5%、iPhone 16.7、windows Mobile 2.8%、linux 2.1% 。Nokia的Symbian系统在Android系统的冲击下,正在从手机市场中的王者慢慢被挤下来。在未来的几年内,Android手机必定会占据手机市场的主要份额,所以在这种形式下,Android应用的前景也必定是前景一片大好。1.2.2 开发意义现如今,电子商品的硬件支持越来越高端。人们对手机的功能要求不再仅仅局限于接电话和打电话了,在这些基本功能的基础上,手机更成了人们日常生活中非常重要的娱乐和休闲工具。许多时候人们都会处于无聊的状态,比如等车的时候、坐长途车的时候.这时若有一款有意思的游戏来打发时间是再好不过了。由于Android手机具有多任务功能,可以一边听音乐一边玩游戏,是让人们在空闲时玩上一玩消磨时间的好东西。1.3 国内外现状分析1.3.1 国内外手机系统现状目前国外各软硬件厂商已经推出过多款手机操作系统。下面简单介绍一下现主流手机操作系统。现阶段使用较广泛大家也相对熟悉的手机操作系统是由诺基亚公司主导推出的Symbian 操作系统。Symbian是为手机而设计的操作系统,它是一个实时性,多任务的纯32位嵌入式的操作系统,具有低能耗,内存占用较少等特点。现在流行的Symbian系统有以下四个版本,分别为S40、S60(第二版)、S60(第三版)、S60(第五版)。S60(第五版)为触摸屏手机版本。IOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPod touch以及iPad使用。就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。IOS的系统架构分为四个层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),可轻触层(the Cocoa Touch layer)。系统操作占用大概240MB的存储器空间。Windows Mobile 系列操作系统是从微软计算机的Windows操作系统演化而来的。Windows Mobile系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件配置(如内存、储存卡容量等)上也比采用其它操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。PalmOS属于Palm公司开发,是一种32位的嵌入式操作系统,是一套专门为掌上电脑编写的操作系统,是一种轻量级、比较开放的操作系统,占用的内存非常小。现在多用Paml公司生产的手机上。该系统允许用户在其基础上编写和修改相关软件,使支持的应用程序更加丰富多彩。Palm系统与其他手机系统相比在其它方面也还存在一些不足,如Palm操作系统本身不具有录音、MP3播放功能等,但是可以通过加入第三方软件或硬件设备来实现。相对国外手机系统百花齐放的局面,国内手机操作系统则处于刚起步的阶段。目前国内还没有自主研发并商品化的手机操作系统。当然近些年来国内企业和我国政府在这方也投入了大量的人力和物力。同时也取得了一定成果。在2009年8月,由中国移动所主导开发OPhone平台面世。OPhone平台采用开源的Linux作为系统内核,借鉴并兼容Android平台,集成灵活高效的Java应用框架,充分借鉴当下主流手机操作系统所具有的良好用户体验,提供了一套完整的电话解决方案和各类移动数据业务解决方案。1.3.2 国内外手机应用现状随着3G在中国的全面启动,它所带来的巨大机遇和新生力量,大规模的网络建设正不断深入展开。但不可否认的是我国在通信领域中相比许多发达国家仍然存在着不小的差距,就在国人还在为EDGE这种传输速度仅能达到384KB/秒的2.75G过渡技术而欣喜的时候,国外早已开始试行HSDPA这种3.5G技术,传输速度更可达到惊人的数兆每秒,而基于其上所开发的延伸功能更是数不胜数,所以国内外手机应用也存在的较大的差异。但国内外对手机应用的需求方向是大致相似的,主要集中在信息服务,娱乐,学习这些方面。目前国内外手机应用服务方向主要有基于地理位置的信息服务(Location Based Service LBS)它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。例如手机定位,导航服务。近年来十分热门的网络社交服务(Social Networking Services)也已进入到手机客户端领域。例如国内有名的社交网站人人网已经针对Iphone,Android,塞班等手机平台推出了手机客户端。国外最大的社交Fackbook也已经传出正在进行针对手机的产品的研发。Twiter,Myspace等国外知名社交类网站都已经推出手机版。国内淘宝网旗下口碑网在今年也已经推出针对多个手机平台的客户端程序。MSN,QQ等即时通信类的应用也已经在各个主流手机平台推出。 手机办公类软件在手机上也正日趋完善,在手机上编辑查看各类文档已经实现,在Android平台上的QuickOffice就是这样的软件。在Google Market(一个谷歌针对Android系统用户所开发的应用商场)上已经有过万的企业应用办公套件。手机娱乐游戏类应用,该类应用作为传统类手机应用,在各个平台上发展已近相对完善,手机上对各种流媒体的播放也已完美的支持。各类传统PC游戏厂商进入手机领域。1.3.3 发展趋势随着3G应用的不断开发推广,用户会越来越需要更加个性化、优质化的多媒体数据服务,用户希望能够随时、随地无缝利用3G网络进行办公、网上交易、游戏娱乐、欣赏影视节目、收听和下载音乐等。根据观察,在不久的将来,移动手机终端将会在以下若干方面具有新的发展。首先,提供智能提醒服务,手机能够与用户实现密切配合,并监控用户的个性化设置(保持在本地或者云端),当重要时间点或关键事物需要用户注意时,手机会向用户发出“提醒”服务,服务包括日程提醒、交通状况、最佳行车路线、最佳泊位、优惠活动、实时新闻、体育赛事、天气情况、股市行情、好友活动、亲友生日等。其次,提供虚拟现实体验,手机可以借助传感器、周边设备了解到您的身边环境,并根据收集到的信息,智能的为您提供有用的信息,如在网络世界养的宠物,可以借助音频设备表达叫声,借助马达和位置传感器等传递其跳、跃等行为信息;也可以在用户购物时,提供相关的同类产品价格参考,提醒用户附近的那个卖场更物美价廉;根据实际场景,为用户及时提供正在操控的产品的使用方法提醒。接着,发挥物联网的优势,借助无处不在的传感器,可以感知并分享到周围世界的海量信息,这些信息将在“云端”得到整合,帮助用户及时、准确的获得气息信息、交通路况。另外借助物联网,用户间可以方便、快速的分享资源,协助和交互。如进行端到端的多人游戏、照片分享、书籍分享、音乐分享等。然后,作为经济工具,在交通或者信息不发达的情况下,帮助用户找到最佳的市场,获得有价值的帮助信息,帮助用户从事的经济活动的收益率。最后,更加智能、安全的设备,随着智能手机的不断普及和更加智能,手机软件的更新、升级将会变得越发简单,并会为用户提供工具或信息,让用户有能力和权力决策那些内容可以浏览、下载或分享。在安全性上也将更加出色,能够十分有效的帮助用户进行获取到的内容的管理,保护用户的个人隐私和基于手机的金融活动如电子钱包、在线支付、在线贸易等。第2章 方案论证2.1 经济可行性分析本系统开发经费并不是很多。个人或者团队都可以按相应时间完成基本功能。若在基本功能上进而实现界面的美化,则还需要更好的美术人员协助实现。投入:除软件开发成本外,需要一台安装Windows操作系统和Android虚拟机的中等以上电脑,一部中等配置的装有Android2.3或以上的Android手机。2.2 技术可行性分析2.2.1 Android平台特性支持组件的重用与替换。意味着我们可以把系统中不喜欢的应用程序换掉,安装我们自己喜欢的程序。Dalvik虚拟机专门为移动设备做了优化。将class文件通过DX工具转换成后缀为.dex的文件来执。Dalvik虚拟机基于寄存器,比java虚拟机快。内部集成浏览器基于开源的WebKit引擎。优化的2D和3D图形库。SQLite数据库,用于结构化的数据存储。支持各种多媒体格式:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF。GSM电话全球通。蓝牙、Wifi(无线网络)、EDGE(GSM到3G的过渡)。照相机、GPS、指南针和加速度计。(10) 丰富的开发环境包括设备模拟器,调式工具,内存及性能分析表和Eclipse集成开发环境插件。Google提供了Android开发包SDK,其中包含大量的类库和开发工具。2.2.2 Android平台架构如图2-1所示的Android操作系统的体系结构图,我们可以看出Android操作系统结构分为4层,由上到下一次是应用程序、应用程序框架、核心类库和Linux内核。图2-1 Android操作系统的体系结构图(1) 应用程序。Android连同一个核心应用程序抱一起发布,改应用程序包包括E-mail客户端。SMS短消息程序、日历、地图、浏览器、联系人管理应用程序等。(2) 开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架用来简化组件软件的重用,任何一个应用程序度可以发布它的功能并且任何其他应用程序度可以使用其所发布的功能块。应用程序都是由一系列的服务和系统组成包括:一个可扩展的视图(Views)、内容管理器(Content Providers)、资源管理器(Resource Manager)、通知管理器(Notification Manager)、活动类管理器(Activity Manager)。(3) Android程序库通过Android应用程序框架为开发者提供服务主要核心库包括:系统C库、媒体库、Suface Manager、LibWebCore、SGL、3D libraries、FreeType、SQLite。(4) Android运行库包括一个核心库,提供java编程语言核心库的大多数功能。(5) Linux内核。Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议、和驱动模型。2.2.3 Android应用程序组件如前所述,Android运行在Linux 内核上。Android应用程序是用Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个VM并非您想象中的JVM,而是Dalvik Virtual Machine,这是一种开源技术。每个Android应用程序都在Dalvik VM 的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中,如下图2-2所示。Linux KernelLinux processDaivik Virtual MachineAndroid application图2-2 Dalvik VMAndroid 应用程序由一个或多个组件组成。1. 活动(Activity)具有可视 UI 的应用程序是用活动实现的。当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。2. 服务(Service)服务应该用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。3. 内容提供程序(Content Provider)可以将内容提供程序看作数据库服务器。内容提供程序的任务是管理对持久数据的访问,例如 SQLite数据库。如果应用程序非常简单,那么可能不需要创建内容提供程序。如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序,那么可以使用内容提供程序实现数据访问。4. 广播接收器(Broadcast Receiver)Android 应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。5. 视图(View)View是Android中图形用户界面的基类,提供了可视化界面展示。Android的图形界面分为三层:底层是Activity;Activity上面是Window; Window上面是Views。View又可以分为View和ViewGroup。View是基本控件,ViewGroup是布局控件。6. 信使(Intent)Intent是不同组件之间相互导航的纽带,封装了不同组件导航查找的条件。Android应用程序是连同一个AndroidManifest.xml文件一起部署到设备的。AndroidManifest.xml包含必要的配置信息,以便将它适当地安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访问网络例如为了下载一个文件那么manifest文件中必须显式地列出该许可。很多应用程序可能启用了这个特定的许可。这种声明式安全性有助于减少恶意应用程序损害设备的可能性。2.3 本项目的开发方法经过深入分析,本项目使用面向对象方式开发是比较好的开发方式。面向对象的软件技术以对象(Object)为核心,用这种技术开发出的软件系统由对象组成。对象是对现实世界实体的正确抽象,它是由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(表示对象的动态行为),封装在一起所构成的统一体。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。 面向对象的设计方法与传统的面向过程的方法有本质不同,这种方法的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分过程中都用应用领域的概念去思考。在面向对象的设计方法中,计算机的观点是不重要的,现实世界的模型才是最重要的。面向对象的软件开发过程从始至终都围绕着建立问题领域的对象模型来进行:对问题领域进行自然的分解,确定需要使用的对象和类,建立适当的类等级,在对象之间传递消息实现必要的联系,从而按照人们习惯的思维方式建立起问题领域的模型,模拟客观世界。 传统的软件开发过程可以用“瀑布”模型来描述,这种方法强调自顶向下按部就班地完成软件开发工作。事实上,人们认识客观世界解决现实问题的过程,是一个渐进的过程,人的认识需要在继承以前的有关知识的基础上,经过多次反复才能逐步深化。在人的认识深化过程中,既包括了从一般到特殊的演绎思维过程,也包括了从特殊到一般的归纳思维过程。人在认识和解决复杂问题时使用的最强有力的思维工具是抽象,也就是在处理复杂对象时,为了达到某个分析目的集中研究对象的与此目的有关的实质,忽略该对象的那些与此目的无关的部分。 面向对象方法学的出发点和基本原则,就是分析、设计和实现一个软件系统的方法和过程尽可能接近人们认识世界解决问题的方法和过程,也就是使描述问题的问题空间和描述解法的解空间在结构上尽可能一致。也可以说,面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统。面向对象的软件系统中广泛使用的对象,是对客观世界中实体的抽象,对象实际上是抽象数据类型的实例,提供了理想的数据抽象机制,同时又具有良好的过程抽象机制(通过发消息使用公有成员函数)。对象类是对一组相似对象的抽象,类等级中上层的类是对下层类的抽象。因此,面向对象的环境提供了强有力的抽象机制,便于人在利用计算机软件系统解决复杂问题时使用习惯的抽象思维工具。此外,面向对象方法学中普遍进行的对象分类过程,支持从特殊到一般的归纳思维过程;面向对象方法学中通过建立类等级而获得的继承特性,支持从一般到特殊的演绎思维过程。 面向对象的软件技术为开发者提供了随着对某个应用系统的认识逐步深入和具体化的过程,而逐步设计和实现该系统的可能性,因为可以先设计出由抽象类构成的系统框架,随着认识深入和具体化再逐步派生出更具体的派生类。这样的开发过程符合人们认识客观世界解决复杂问题时逐步深化的渐进过程。2.4 开发工具及环境简介2.4.1 开发工具Eclipse简介Eclipse是一个开放源代码的、与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。其未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。目前,Eclipse已经开始提供C语言开发的功能插件。更难能可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在 Eclipse之上COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。Eclipse的主要组成。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成 Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。2.4.2 开发环境简介本项目在windows 7操作系统上进行开发,Google为开发者提供了SDK(Software Development Kit)。Android SDK的下载地址为http:/development.A/index.html。因为本项目的开发工具是Eclipse,所以还需要安装ADT(Android Development Tools)插件。具体安装步骤就不在本文中介绍了。第3章 需求分析需求分析工作是软件生存周期中重要的一步,也是起决定性的一步。通过它可以全面了解整个系统的功能和性能方面的要求,为软件设计打下坚实的基础。该部分的目标主要有:获得目标系统的物理模型,了解目标系统是如何运行的;抽象出目标系统的逻辑模型,对物理模型进行筛选,得到与软件系统有关的部分;建立目标系统的逻辑模型,得出数据流图和数据字典;补充目标系统的逻辑模型,对目标系统的用户界面,至今尚未考虑的细节进行说明。本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求。(1) 利用屏幕滑动来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。3.1 系统开发目标采用基于Android的程序设计技术,以及用Eclipse开发Android程序的相关技术开发出具有良好用户界面,操作简单易学,游戏功能齐全且有益于智力开发的贪吃蛇游戏。3.2 系统需求分析3.2.1 业务需求分析虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的.因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强.可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行.对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游戏刚好迎合了他们的需求。手机贪吃蛇游戏基于JAVA平台编写,采用Android技术开发的一款手机游戏。手机游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。JAVA是基于虚拟机的半解释型编译系统,其执行效率较C+等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。3.2.2 用户需求分析本项目中用户的需求如下图3-1。开始游戏操作游戏退出游戏player图3-1用户需求游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。但是用户对软件产品也有一定的要求。1. 简单易学时间不管对于谁来说都是宝贵的,用户不会愿意花大量时间去学习使用一款软件。一款软件如果操作界面不友好,让用户难以上手使用,那就说明这款软件开发得不够成功,从而失去大量的用户。所以本项目必须拥有良好的交互界面,让用户安装之后就能进行游戏。2. 运行稳定一款软件设计得不够好,那么就有可能在运行的时候出现一些不可预料的错误从而造成软件崩溃。如果用户正在游戏突然软件崩溃了,无疑会让用户感到非常不舒服,有可能就把软件给卸载了,这样也会失去很多用户。3. 操作简便用户不是程序员,他们不知道程序的内部逻辑。所以程序员必须提供给用户便捷的操作接口来供用户操作,灵活便捷的操作性直接影响了一款软件的好坏。3.2.3 功能需求分析本项目是一个运行在Android手机上的游戏,所以在应该实现以下功能。1. 响应键盘事件玩家可以从手机触屏开始游戏,操控游戏,暂停游戏,结束游戏。2. 绘制游戏图形界面玩家开始游戏后,在手机屏幕上绘制出一条初始由4个节点组成小蛇。蛇能够在屏幕上移动,屏幕上随机位置出现食物,当蛇吃到食物后蛇的身体会增长一截同时移动速度也会响应加快。蛇不能向相反方向移动,例如蛇头朝南时则不能向北移动。当蛇头碰到墙壁或者碰到自己的身体时游戏结束。3. 记录玩家分数当游戏结束后,显示玩家在游戏中所获得的分数。 第4章 贪吃蛇详细设计4.1 程序流程设计本游戏的流程如下图4-1所示。4.2 概要设计4.2.1 模块划分从面向对象程序设计的角度,本项目总体可以分为游戏界面模块、数据存储模块和控制模块。如下图4-2所示。游戏数据存储模块贪吃蛇游戏游戏主界面模块游戏控制模块图1-2 游戏总设计模块4.2.2 游戏主界面模块游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮。游戏界面主框架的主要结构图如图1-3所示。游戏的主界面架游戏图形区域界面游戏暂停结束窗口图1-3 游戏主界面4.2.3 游戏控制模块 游戏控制模块主要通过手机屏幕的滑动来控制游戏的开始、游戏的退出这两个功能以及控制游戏分数变化。在这个模块中,需要给各个按钮添加响应事件代码,来对上述的功能加以进一步的实现。游戏控制模块的主要框架如图4-4所示。游戏控制模块游戏的移动速度功能能游戏的暂停功能游戏的重新开始图1-4 游戏控制模块框架4.3 模块实现原理4.3.1 游戏界面模块实现1. 实现游戏背景本游戏采用Activity作为游戏背景的载体,在Android中一个Activity就相当于windows中的一个窗口,Activity上可以放置许多类型的控件。一个activity主要有三个状态。当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的activity。 当它失去焦点但仍然对用户可见时,它处于暂停状态。即是:在它之上有另外一个activity。这个activity也许是透明的,或者未能完全遮蔽全屏,所以被暂停的activity仍对用户可见。暂停的activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极低内存的情况下,仍然可以杀死这个activity。如果它完全被另一个activity覆盖是,它处于停止状态。它仍然保留所有的状态和成员信息。然而它不在为用户可见,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个activity。如果一个activity处于暂停或停止状态,系统可以通过要求它结束(调用它的 finish() 方法)或直接杀死它的进程来将它驱出内存。当它再次为用户可见的时候,它只能完全重新启动并恢复至以前的状态。当一个activity从这个状态转变到另一个状态时,它被以下列protected方法所通知。void onCreate(Bundle savedInstanceState) 、void onStart() 、void onRestart() 、void onResume() 、void onPause() 、void onStop() 、void onDestroy()2. 实现蛇的身体蛇可以看做是一个个节点组成的,因此可以用一个链表来存储蛇身的元素,在画蛇时遍历这个链表讲里面的元素一一画出,这样就实现了一条蛇。3. 实现蛇的移动用一个timer(定时器)来不断地刷新游戏画面,每刷新一次就再蛇头的前面(链表的尾部)增加一个新元素,同时把蛇尾的一个元素删掉,这样从视觉上看起来就实现了蛇的移动。4. 实现蛇吃食物蛇移动的过程中如果蛇头的坐标与食物出现的坐标重合了,那么就在蛇头的位置增加一个元素同时不删除蛇尾的最后一个元素,这样蛇每迟到一个食物身体就会变长一截。4.3.2 游戏控制模块实现1. 实现操作蛇的移动方向在Android系统中,手机上的每个按钮都会有一个对应的键值跟它对应,所在可以给对应的按钮设置监听器OnClickListener,监听器是一个接口,该接口中有一个方法onClick(View v)。当按钮被点击的时候系统会自动调用该监听器的onClick(View v)方法。所以实现游戏控制的具体代码将被写到该方法中。因为本游戏中不允许蛇向与蛇头相反的方向移动,所以当用户操作时需要判断用户操作的方向是不是跟规则冲突,若冲突则无视该操作,若不冲突则响应该操作,所以需要用一个变量来记录蛇头的当前方向。2. 实现游戏暂停在Activity的生命周期中,有一个onPause()方法.该方法在Activity变得不可见的时候被系统自动调用.在玩游戏过程中,如果有来电或是其它事件中断,这时应该把当前状态保存。以便返回时,还可以继续玩游戏。这就使用onSaveInstanceState实现保存当前状态。3. 实现游戏恢复Activity生命周期的onResume()方法.该方法在Activity从不可见的状态下变得可见时被系统自动调用.在用户接完电话或者在暂停状态下触摸屏幕后可以在该生命周期方法中对游戏进行恢复。4. 实现游戏退出当一个Activity退出或者被调用finish()方法后,系统会调用其生命周期方法onDestroy().当用户退出游戏时,可以在这个方法中对资源进行释放。4.3.3 TileView类的设计TileView是游戏的界限,即蛇头若触碰到界限则游戏结束。因为界限也需要被现实到屏幕上,所以TileView需要继承Android.view.View类。Android.view.View类是描绘块状视图的基类。View会绘制一个包含Drawing是event事件的方形块。View是所有与用户交互的组件的Widgets的基类(Buttons,textField等),View的子类ViewGroup是layouts类的基类,layouts类可以包含其他的View/ViewGroup组件并且定义展示的属性。实现一个View,首先需要实现框架中一些所有Views公用的方法。不必重写所有所有的方法,可以仅仅重写onDraw(Android.graphics.Canvas)。4.3.4 worm类的设计worm是本游戏的业务逻辑类,该类中包含了游戏数据和一些处理数据的方法以及一些内部类。worm的方法摘要。1. 判断按键的方法在Android手机上,每个按键都会有一个唯一的键值与它对应,可以通过获得键值来判断哪个键被按下了并采取相应的动作。2. 设置提示信息的方法通过程序判断动态地设置用户提示信息,如游戏结束。3. 在随机位置出现食物的方法通过随机数在屏幕范围内随机出现一个食物,但是不允许同一时刻有两个食物存在。4. 刷新蛇的当前位置的方法主要用于刷新蛇的当前位置。5. 判断蛇是否吃到食物的方法因为食物和蛇都会有一个坐标,所以可以通过判断蛇头坐标是否跟食物坐标相等的方法来判断蛇是否吃到了食物。4.4 程序主结构 本次所设计贪吃蛇游戏的程序主结构如图4-5所示。初始化进入事件等待状态初始化失败不正常退出开始请求相关事件返回暂停请求退出正常退出图1-5贪吃蛇程序主结构4.5 程序类图该程序由以下五个类实现,分别为worm,wall,mainactivity。各个类之间的关系及所包括的方法如图4-6所示。worm-mSnakeView: SnakeView-ICICLE_KEY: String+onCreate()+onPause()+onSaveInstanceState()SnakeView+SnakeView(context: Context, attrs: AttributeSet)+initSnakeView()+initNewGame()+onKeyDown(keyCode: int, msg: KeyEvent): boolean+addRandomApple()+update()+updateSnake()+updateWalls()+updateApples()+coordArrayListToArray(cvec: ArrayList): int+restoreState(icicl: Bundlee)+setTextView(newView: TextView)TileView-mTileSize: int-mXTileCount: int-mYTileCount: int-mXOffset: int-mTileArray: Bitmap-mYOffset: int+TileView()+onSizeChanged(w: int, h: int, oldw: int, oldh: int)+loadTile(key: int, tile: Drawable)+clearTiles()+onDraw(canvas: Canvas)图1-6程序类图4.6 类的详细设计4.6.1 worm类的详细设计worm类是蛇头以及蛇头的控制部分,包括判断newDirection和oldDirecti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林服务相关知识培训课件
- 桥梁监理安全知识培训课件
- 2025年外贸业务员招聘面试题及解析大全集
- 2025建筑安全员《C证》考试题库及答案
- 2025年设计笔试常见题含答案解析
- 2025年可持续发展与环境政策考试试题及答案
- 2025年数据分析师金融分析方向面试技巧与模拟题集
- 2025年金融风险管理师FRM考试指南与备考策略
- 2025年篮球理论试题及答案
- 2025年餐饮服务行业招聘考试模拟题集
- 部编小学语文四年级上册第一单元大单元教学设计
- 医院检验科实验室生物安全管理手册
- 选品与采购全套教学课件
- 关于女性生殖健康知识讲座
- 全国新闻记者职业资格考试一本通
- DB13-T 5838-2023大型会展活动临建设施安全、绿色管理通用要求
- 2023年福建省泉州市初中化学学科教学研训讲座-明晰目标要求优化行动策略
- 创伤失血性休克中国急诊专家共识(2023)解读
- 山西人文知识竞赛考试题库及答案(500题)
- 医疗器械操作规程
- (订正版)全面质量管理知识习题集大全(含答案)
评论
0/150
提交评论