基于Android系统的游戏APP设计_第1页
基于Android系统的游戏APP设计_第2页
基于Android系统的游戏APP设计_第3页
基于Android系统的游戏APP设计_第4页
基于Android系统的游戏APP设计_第5页
免费预览已结束,剩余40页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、烟幺布3号院YantaiNanshanUniversity本科毕业设计(论文)题目:基于Android系统的游戏APP设计院系:工学院电气与电子工程系专业:自动化班级:自动化班02姓名:王学松学号:201202022007指导教师:张俊超杨鹏烟台南山学院教务处二0一六年六月烟台南山学院毕业设计(论文)原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在论文中作了明确的说明并表示了谢意。本声明的法律结果由本人承担。论文作者签名:年月日

2、烟台南山学院关于毕业设计(论文)使用授权的说明本人完全了解烟台南山学院有关保留、使用学士学位论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。指导教师签名:论文作者签名:年M日年月烟台南山学院本科毕业设计(论文)基于Android系统的游戏APP设计摘要随着移动互联网的不断发展,我们的生活发生了巨大的改变,智能手机已经成为我们日常生活所必不可少的一个工具,而在整个手机操作系统中,Android以一种开放源码操作系统为基础的系统迅速霸占了手机操作系统市场,因而在Android系统的环境下开发极其重要。Androi

3、d系统是完全开放性的系统构架,不仅开发和调试环境方便快捷,而且对于用户来说,具有极强的扩展性,用户可体验各种丰富的组件、多媒体功能和各类浏览器。对于从事软件开发工作的人,在Android平台下开发软件非常有吸引力。Android是以Java为基础的一种语言,本文详细介绍了如何在Android平台上开发编写程序,在分析软件开发技术原理的基础上,在Android平台上为用户开发了一款数独游戏。而在对Android系统进行进一步需求分析时,明确了系统的各项性能要求,而且对于数独游戏的启动动画、主界面设计、屏幕的绘制、时间的控制以及如何布局等进行了一系列的设计,最终为用户实现了一个操作简单、内容丰富的

4、益智休闲游戏。关键词Android数独游戏智能机烟台南山学院本科毕业设计(论文)第II页TheDesignofGameAPPasedonAndroidABSTRACTWiththecontinuousdevelopmentofmobileInternet,greatchangeshavetakenplaceinourlives,smartphoneshavebecomeanindispensableatoolofourdailylives,andinthemobilephoneoperatingsystem,Androidisanopensourceoperatingsystembasedsy

5、stemquicklyoccupiedmobileoperatingsystemmarket,thusintheAndroidsystemundertheenvironmentofdevelopmentisextremelyimportant.TheAndroidsystemiscompletelyopensystemarchitecture,notonlyconvenientandquickdevelopmentanddebuggingenvironment,andforusers,haveextremelystrongextensibility,theusercanexperiencear

6、ichvarietyofcomponents,multimediacapabilities,andallkindsofbrowsers.Forpeoplewhoworkinthesoftwaredevelopment,developingsoftwareintheAndroidplatformisveryattractive.AndroidisbasedonJavalanguage,thispaperintroducesindetailhowtowriteaprogramontheAndroidplatformdevelopment,onthebasisofanalyzingtheprinci

7、pleofsoftwaredevelopmenttechnology,intheAndroidplatformforuserstodevelopasudokugame.AndinfurthertotheAndroidsystemrequirementsanalysis,clearalltheperformancerequirementsofthesystem,andtostarttheanimation,sudokumaininterfacedesignanddrawingofthescreen,timecontrolandhowtolayoutandsoonaseriesofdesign,f

8、inallyrealizesasimpleoperationfortheuser,contentrichpuzzlecasualgames.KeyWordsAndroidSudokuGameSmartphone烟台南山学院本科毕业设计(论文)目录第1章绪论11.1 选题背景及意义11.2 Android手机游戏APP的市场现状21.3 本文主要内容2第2章Android系统平台概况32.1 Android操作系统32.2 Android操作系统特性32.3 Android操作系统框架结构42.3.1 Application42.3.2 ApplicationFramework42.3.3 Li

9、brariesAndAndroidRunTime52.3.4 LinuxKernel52.4 Android应用程序构成52.4.1 Activity52.4.2 BroadcastReceiver62.4.3 Service62.4.4 ContentProvider62.5 Android应用程序的生命周期62.6 系统的整体设计83.1 数独游戏简介83.2 游戏策划93.2.1 欢迎界面的策划93.2.2 游戏界面的策划93.2.3 相关资源103.3 游戏的架构103.3.1 各类的介绍103.3.2 游戏的框架简介11烟台南山学院本科毕业设计(论文)第4章软件的实现134.1 欢迎

10、界面的实现134.1.1 KLSDActivity实现134.1.2 WelcomeView类的实现134.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现.144.1.4 HelpView类和AboutView类的实现164.2 游戏界面相关类的实现174.2.1 GameView的实现184.2.2 TimeThread的实现184.3 数独算法类的实现194.3.1 数独算法基本逻辑204.3.2 检测填充结果214.4 游戏的测试和运行224.4.1 游戏测试概述224.4.2 测试环境234.4.3 游戏运行结果23结论27致谢28

11、参考文献1烟台南山学院本科毕业设计(论文)第1章绪论1.1 选题背景及意义2007年,Android手机操作系统横空出世,并以开源的特点迅速占领手机操作系统的市场。据调查,在当今智能手机操作系统中,Android系统的智能手机所占的比例已经高达到62%,越来越多的用户选择安卓手机。占据着如此巨大的市场份额,所带来的利益也是极其诱人的,随着移动互联网的发展以及智能手机的普及,对于手机APP发展越来越快,其中,手机游戏APP的开发更加具有诱人的利益。手机游戏APP吸引用户最大的特点就是因为方便,用户可以随时随地使用,正因为这个特点,手机游戏APP已成为用户最喜欢的移动应用之一,不管在iPhone还

12、是在Android,发展速度都极其迅速1。常见手机游戏APP的特征可概括如下:(1)潜在用户群巨大:据调查。目前全球有20亿人使用移动电话,并且每天这个数字都在增加。甚至除了一些发达国家外,各国的手机用户都远远超过计算机用户。由此可以想象,手机游戏的潜在价值是十分巨大的。(2)移动性与便携性:相比于传统的控制台游戏,手机游戏APP具有可以随身携带,用户可以随时随地进入游戏,去参加一些限时活动或者购买装备等特点。因为这个特点使得手机游戏APP早已成为人们日常生活中用于消遣时间的选择。用户可以在等车、休息时进行游戏。调查显示,适当的玩玩游戏可以让人释放压力,因而手机游戏APP已慢慢变成人们日常生活

13、中一种普遍的娱乐方式。(3)支持网络:手机是一种网络设备,在某些时候可以让多个用户同时在线游戏。而随着移动互联网的发展,用户越发渴望移动游戏,为了满足用户的这一要求,Android平台游戏的开发将之运用在了实际中。本文以数独游戏APP为例,详细介绍了在Android系统平台上开发的优势。数独又被称之为九宫格,来源于中国古代,但那时的规则更加复杂,那时的规则不是数字不能重复,而是要求每行、每列以及斜向上的各数字之和为15。易经中的九宫图也是由此而来。数独真正被世人所了解是在2004年英国泰晤士报的封面上刊登了一个数独的游戏。由此数独游戏开始广泛传播。烟台南山学院本科毕业设计(论文)数独的游戏规则

14、十分简单,用户只需在空格处填上1-9的数字,并使该数字在每行、每列以及每个小的九宫格内都只能出现一次,这种推理性的游戏操作极其简单,不需要数字运算,而且有助于开发大脑,锻炼思维,因而很受用户喜爱。1.2 Android手机游戏APP的市场现状Android是由Google开发的一种基于Linux平台的开源操作系统。它包含移动手机工作的全部软件,集操作系统、界面展现及软件应用程序于一体,并且解决了以往产业创新的专有权问题2。Google与30多家在技术和无线应用方面的知名企业共同开发出了Android系统。并且通过与开发商、运营商以及制造商等合作伙伴建立良好的合作伙伴关系,共同建立一个开放式,标

15、准化的生态系统。在Android系统上开发的游戏软件,无需进行市场划分,更加不需要为用户进行量身定制等需求。因为用户的核心需求都是娱乐和打发时间,这样的要求依附于社会发展层次,与地区限制等因素无关,甚至可以打破文化的限制。考虑到这一因素,游戏在开发时都会考虑它的普遍性及其传染性,如何让推出的一款游戏点燃用户周围玩家的激情,从而占领整个市场,这是每个商家需要考虑的问题。而在当今社会,每一个使用Android手机的用户都有可能是游戏需求的潜在用户,而随着移动时代的到来,Android手机的用户量也是每日剧增,在这种利益的驱使下,Android手机的市场越发壮大,其所带来的潜在影响就是游戏市场将得到

16、巨大的发展空间3o1.3 本文主要内容本文由五个部分组成,各部分内容如下:第一章绪论。详细介绍了本文的选题背景及意义,以及Android手机游戏的市场现状。第二章Android系统平台概况。这一章主详细介绍Android智能手机系统的市场现状、功能特征、特点以及体系结构等方面的内容。第三章系统的整体设计。这一章主要介绍了对游戏APP的一系列策划,所要实现的功能以及架构的介绍。第四章软件的实现。这一章对整个游戏APP的界面、游戏过程中可能会出现的问题的处理以及游戏的修改和整合做了详细介绍。总结。对本文所描述的加以总结并表达对未来的期望。烟台南山学院本科毕业设计(论文)第2章Android系统平台

17、概况这一章将对Android开发平台做出详细的介绍,包括Android操作系统、特性、系统框架、程序的各个模块以及系统的生命周期。2.1 Android操作系统Android手机操作系统是基于Linux平台实现的一种开放源码的手机操作系统,由谷歌于2007年推出的,为了占据移动终端的头把交椅,谷歌不惜花费巨力将Android打造成为真正意义上的开放源码的移动平台,在移动终端的基础上,让Android在拥有移动手机所需要的一系列软件的基础上,能够更进一步加快移动互联网的前进步伐,并且能够在原有基础上得到创新。由于Android的前景及其存在的巨大利益,谷歌为此可以说是花费了巨大的精力和成本。开发

18、Android系统初期,通过和全球30多家在手机应用和移动开发项目上的领军人物的合作,使得Android在一开始就有了一个良好的基础。后期为了依靠Android系统的良好优势创建一个开放性、标准化的移动软件平台,谷歌更是与开发商、制造商以及运营商等形成了长期友好的合作伙伴关系。为了让每一个Android系统的移动手机用户可以在任何时间和地点都能够被提供所需要的信息4,谷歌甚至将Android操作系统当做是公司企业战略之一。2.2 Android操作系统特性Android操作系统特性如下所示:(1)框架及特性:Android操作系统有4大组件及各式的控件,用于软件开发,其有两个主要的特性,分别是

19、复用性和替代性。(2)虚拟机Dalvik:在开发软件过程中,免不了需要检测软件运行情况,而这就离不开虚拟机的作用,在Android操作系统中所使用的虚拟机是一种由谷歌开发的JavO§拟机,不同于市面上所推行的其他虚拟机,谷歌自主开发的虚拟机更加适用于Android系统,而且运行效率较其他的更快,资源占用率更小。(3)SQLite数据库:在移动设备中存在大量的数据,如何管理这些数据是十分重要的一个环节,而SQLite数据库的出现有效解决了这一问题,SQLite可以进行层次化的存储数据并且它的占用内存少,处理速度快,此外SQLite还可以支持事务处理。烟台南山学院本科毕业设计(论文)(4

20、)多媒体:支持各种格式的音视频文件(5)全球移动通讯系统:简称GSM为了实现全球标准化网络,使得一部移动设备不受区域限制而推出的第二代移动通信技术。(6)蓝牙:蓝牙是一种在短距离内实现语音和数据传输的无线连接技术。(7)全球定位系统:简称GPS,是由覆盖全球的24颗卫星组成的卫星系统。(8)开发环境:以Eclipse®成开发环境为核心,调试工具,设备模拟器,内存及性能检测为辅。2.3 Android操作系统框架结构Android系统操作平台主要分为四个部分,依次为:Application>ApplicationFramework、LibrariesAndAndroidRunTi

21、me、LinuxKernel0如图2.1所示。APPUCATSOHSHomeContactsPhoneBn>w3crAPPLlICATaONFRAMEWORKActM守ManagerRieka萨MinagerWindow植口*静日叩honyCantcntR-urwManagerViowNotificationSy5cmManagc-r*而"XHPPServiceFlinagerLIBRARIESAndroidRuntimeSurfaceManagerSQUc®FrameworkConeLibrariesOpenGL|E$FreeTypiaWebKtEMachine3G

22、LSSLlitre'iE=LinuxKernelDnvtrGeeDriver由口rlwr口用Bmdtr(IPC)OrlverUSBDnverKeypadDriverWiftMmrAudioDrMrsPowerMahsgement图2.1Android操作系统平台的架构模型2.3.1 Application与传统的操作系统不同,谷歌为了用户能够更好地体验Android系统,对于一些传统的应用仍会保留。但与其特有的应用一样,所有应用都将基于Java®言进行编写。但这并不妨碍用户的使用,因为所有应用都可以通过网络嵌入,在同等条件创建,可以并行运行5。2.3.2 Applicatio

23、nFrameworkAndroid移动设备上的每一个应用程序都是各个组件组成,而Android系统主要有烟台南山学院本科毕业设计(论文)4大组件,分别是Activity>BroadcastReceiver、Service以SContentProvider,这些组件通过ApplicationFramewor座!供的API组成了一个个应用程序的框架。有了这样一个大的框架,再加上一些控件的添加,就组成了一个个移动设备中所使用的应用程序。2.3.3 LibrariesAndAndroidRunTimeAndroid之所以能被不同组件相互使用,主要是由于它有自己的一套核心库,通过核心库的内容,程序

24、员在开发是可以省去不少麻烦。由于Android是基于Javalht开发的,因而在Android核心库中包含了大部分Java®言核心库的内容。Android系统中所用到的虚拟机Dalvik就是以Linuxkernel为基础实现的,Dalvik和JavaVM不同,Dalvik执行的.dex格式的文件,而JavaVM执行的是标准的字节码。此外Dalvik是Register-base(6的虚拟机,可以最大限度的实现优化,更加实用于移动设备,而JavaVM是Stack-base城拟机,远不如Dalvik。2.3.4 LinuxKernel正如每个人都需要一个大脑一样,每一个操作系统也需要一个核

25、心,对于Android操作系统而言使用Linux内核来作为系统的核心处理事务。其中包括机制的安全、内存及进程的管理以及网络堆栈等。Android操作系统的运行离不开移动设备的驱动程序,其中主要的有DisplayDriver、FlashMemoryDriver>CameraDriver、AudioDriver>Wi-FiDriver>KeyBoardDriver>BluetoothDriver以及Android所特有的驱动BinderIPC驱动7等。2.4 Android应用程序构成与其他计算机开发平台不同,在Android平台上开发的程序都有一个唯一的入口启动程序,正如

26、前面所说到的,程序的开发是由各个组件之间的相互组合而成,Android操作系统有四大组件,这些组件通过Inten俅传递数据。在一个程序中并不是都需要Activity、Service、BroadcastReceive环口ContentProvider等全部的组件,有时可能只需要几种组件相互组合就可以了。另外,正如每个公司都需要在工商局注册一样,每一个组件的使用也需要在清单文件中注册网。清单文件是一个xml文件,就如一个国家的法律一样,清单文件是每个程序都不可或缺的。2.4.1 Activity作为四大组件之一的Activity应该是程序员用的最多的一个组件,也是最好用的的一个组件。在一个程序中,

27、每一个Activity就是一个手机界面。而在这个界面中程序员可以添加很多视图,如:Button、EditText、ListView等。通常情况下一个应用程烟台南山学院本科毕业设计(论文)序可能包含多个Activ让y,而每一个ActMty之间也可以相互跳转。当然Activ让y之间的跳转也是可以返回的,这种返回机制在多个Activity之间的跳转是非常有效的。用户可以通过这种机制继续之前的操作。这些Activity之间的相互跳转都离不开Intent的作用。Intent主要有两个数据结构组成,action及data。Action的种类很多,常见的有:main、view、edit等,而action所需

28、数据都是url的形式9。2.4.2 BroadcastReceiver当程序需要处理外部事件时,需要利用BroadcastReceiver来完成,用户并不能看MBroadcastReceiver,用户只能通过NotficationManager来了解发生了什么事件,BroadcastReceive也需要注册才能使用,只不过这个注册可以是在清单文件也可以在代码中进行10。只要完成注册,一旦事件发生,应用程序可以直接启动。2.4.3 ServiceServiced是程序的一种,它可以长时间运行,和BroadcastReceiveL/Service也没有用户界面,不仅没法交互,而且不能自己运行。只有

29、通过Activity或Contexts寸象来调用11。比如说用户在使用音乐播放器时,突然想要上网,此时,用户的手机虽然跳转到了网页界面,但是音乐播放器并没有停止工作,而是等待用户的唤醒继续使用。而这正是由于Service在执行。如果用户有需要也可以强行停止Service的运行。2.4.4 ContentProvider不同于其他的操作系统,Android操作系统在文件类型、数据库类型以及其他类型等数据存储方面是独立的,这就有效的避免了某些病毒或不正常程序运行所带来的影响。虽然数据存储是独立的,但是却并不影响数据在程序之间的交换。为了方便数据的共享,Android系统提供了ContentProv

30、ider,一个程序如果想要获得另一个程序的数据,只需在该程序中实现ContentProvider®0,此时只要其他程序有访问权限,就可以获取该程序的数据并对其进行修改12。2.5 Android应用程序的生命周期程序的运行是指从开始到结束的过程,每一个程序都有一个生命周期。不同于其他系统,在Android平台上开发的程序的生命周期与自身无关,不受自身的约束,而是通过Android系统来决定的,一个程序的生命周期长短是由系统的负载和应用程序来决定的。Android系统程序进程如图2.2所示。烟台南山学院本科毕业设计(论文)关键优先级高优先级低优先级图2.2Android应用程序进程优先

31、级(1)前台进程:在程序运行过程中前台进程是极其重要的,是与用户进行交互所必不可少的。前台进程主要有四种情况。正如上文提及到一样,系统在运行过程中可能涉及多个进程同时运行的情况,这会导致系统内存被极大的占用,此时如果设备的内存不足,则会导致某些进程无法继续运行,此时需要清除一些长时间未曾使用的进程以释放内存资源,保证其他进程的正常运行。(2)可见进程:可见进程顾名思义就是指用户可以看见的页面,但是却不与用户进行交互,对于程序的运行没有任何影响。此外与该进程相关的其他进程如果正被可见进程调用,则该相关进程同样被视为可见进程。Android系统正常情况下不会存在大量可见进程,但有时为了前台进程的正

32、常运行,系统会清除一部分可见进程,释放内存,为前台进程提供资源。(3)服务进程:服务进程就是指系统正在运行的程序。服务进程同样是不可见的,一般情况下,服务进程会一直在后台运行,但有时为了前台进程和可见进程的正常运行,系统也会结束一些服务进程,释放资源。(4)后台进程:后台进程是指所有已启动的进程之外的进程,在Android系统的移动设备中存在大量的后台进程,这些后台进程会占据大多的内存资源,所以优势为了保障其他进程的正常运行,系统会优先考虑结束后台进程。(5)空进程:空进程是一个没有任何组件的进程,用户同样看不见,但在释放资源时,空进程会第一个被清除,空进程与其他进程存储地址不同,空进程储存在

33、系统内存中,设备被重新启动时,空进程依然会运行。设备在运行过程中会涉及到释放资源方面的问题,当系统资源紧张的时候,系统会优先释放优先级低的进程,一个进程的优先级取决于该进程中组件的优先级最高的那个13o如果一个进程需要获取另一个进程的数据,那么这两个进程会保持相同的优先级。烟台南山学院本科毕业设计(论文)第3章系统的整体设计3.1数独游戏简介数独的游戏规则很简单,用户在运行游戏之后,设备的界面上会出现一个9X9的表格,总共81个格,其中有些格有数字,用户只需在其他空格处填上1-9的数字,并且使得每个数字在每行、每列以及每个3M的格子中都只有一个。游戏框架如图3.1所示。图3.1游戏框架图退出数

34、独游戏是一款非常容易上手的游戏,下面我简单介绍一下该游戏的运行步骤。(1)用户在自己的移动设备上点击游戏图标,首先进入眼帘的便是游戏的欢迎界面,用户可以点击任意位置进入主菜单。(2)在菜单界面有四个选项,用户可根据提示进行不同的操作。(3)在进入游戏时,用户可以看见在下方有四个按钮以及一个计时区,用户可以查看游戏运行时间,也可以通过点击按键进入不同的操作。(4)当用户将设备界面上所有的空格全部填满时,系统会自动进行比对,如果全部正确,则会跳转到胜利的界面,反之,弹出游戏失败。(5)不管是胜利还是失败,用户都可以点击任意位置返回欢迎界面烟台南山学院本科毕业设计(论文)(6)在主界面点击退出游戏即

35、可结束游戏。3.2游戏策划3.2.1 欢迎界面的策划用户在运行游戏后,首先进入的是开机动画界面,这一功能的实现主要是利用图片的刷帧效果。用户在开机动画界面任意点击即可进入游戏的主菜单界面,根据提示点击相应位置即可实现相应的功能。如图3.2所示。13518Qi2302BD330口日02如320nnn_1i开始游戏I空蟠帮助游戏图3.2菜单界面I退出游戏I这里选取480刈20的手机屏幕分辨率,当y位于(135180)时,程序开始游戏;当y位于(180230)时,程序会进入防戏介绍界面;当y位于(230280)时,程序会跳转到游戏帮助界面;当y位于(280330)时,程序直接退出。3.2.2 游戏界

36、面的策划当用户进入游戏时,在游戏界面下方会有四个功能键以及一个计时区。如图3.3所示。游戏区计时区暂停换题提示退出图3.3游戏主界面游戏主界面分为三个区域,游戏区域是用户需要操作的区域,计时区是用于提示用户游戏进行了多久,四个按钮可以让用户实现相应操作烟台南山学院本科毕业设计(论文)第10页3.2.3 相关资源程序自身并没有音乐及图片等资源文件,所需资源都需要程序员自行添加,程序所需资源如表3.1所示。表3.1所用图片资源图片名用途图片名w用途a1-a9.png21X21输入数字key_background.png100M00数字键盘b1-b9.png21X21默认数字change2.png5

37、0>30按下换题icon.png150>80游戏图标change1.png50>30未按下换题fail.png150>80游戏失败select.png24>24选中单元格win.png150>80恭喜过关drop1.png50>30未按卜放弃go_on.png150>80暂停中drop2.png50>30按卜放弃time0.png21X21实践中的0help1.png50>30未按卜提不help2.png50X30按T提示stop1.png50>30未按卜暂停stop2.png50X30按卜暂停background.jpg320

38、>480背景heart.png25X25提示图标small_background.png100M00背景方框time.png31X31时间冒号about.jpg320>480关于背景exit.png200>86退出提示help.jpg320>480帮助背景menu.jpg320>480菜单单元w1-w30.gif320>244欢迎动画帧在Android操作系统中,非代码类的文件存放于res文件夹下,图片等资源则存放于drawable文件夹下。3.3游戏的架构3.3.1 各类的介绍1 .共有类KLSDActivity类继承父类Activity并重写里面的方法,

39、是整个程序的核心和入口,通过与其他类的交互获取消息,并通过对收到的消息的处理跳转到其他界面140这是整个程序唯一的公共类。2 .欢迎界面相关类(1) WelcomeView类:游戏欢迎界面类,即用户运行游戏所展现的界面。(2) WelcomeViewDrawThread类:该类是欢迎视频界面的刷帧线程。烟台南山学院本科毕业设计(论文)第11页(3) WelcomeViewGoThread类:欢迎界面的服务线程。(4) AboutView类:游戏介绍界面的绘制。(5) HelpView类:游戏帮助界面。3 .游戏界面相关类(1) GameView类:介绍游戏的规则及模型,同时生成游戏过程中的各个

40、画面及用户的交互。(2) GameViewDrawThrea战:执行刷帧操作。(3) TimeThrea战:刷新游戏运行时间。(4) DrawKeyThread类:改变键盘透明度,执行渐变处理。(5) ShuDuSuanFOt:存放数字的二维数组。3.3.2游戏的框架简介游戏框架图如图3.4所示。就迎界面相关类公共类W*kemeViewWekorneVkwGoThrcadAboutViewKLSDActivity游戏界面相关类G事ewVIowGameViewDrawThreadSfmDuSujnFaDrawKeyThreadTin忙Thread图3.4游戏框架下面将通过对程序的使用分别详细讲述

41、每个类的作用,步骤如下。(1)用户运行游戏后,在KLSDActivity中首先会初始化WelcomeView,之后设备将会跳转到WelcomeView界面。然后通过WelcomeViewDrawThread与WelcomeViewGoThread来生成欢迎界面及刷新界面。(2)当用户进入游戏首页之后,通过点击提示的帮助按钮,系统会自动调用HelpView类来显示帮助界面。同理,当用户点击关于按钮时,系统会通过AboutView烟台南山学院本科毕业设计(论文)第12页类显示关于界面。(3)当用户开始游戏时,系统进入GameVew类,同时GameViewDrawThread被启动并刷新界面。(4)

42、当用户在游戏过程中可以通过点击任意空白位置,系统会自动调用DrawKeyThread线程来生成数字键盘。(5)用户在开始游戏时,系统会在自动启动TimeThrea激程,来更新时间。(6)用户在游戏开始前,系统会通过ShuDuSuanF联生成数独数组,生成的数组将作为评判用户输入数字是否准确的标准。烟台南山学院本科毕业设计(论文)第13页第4章软件的实现4.1 欢迎界面的实现4.1.1 KLSDActivity实现本设计所有类之间的调度都是通过主类KLSDActivity进行的,KLSDActivity不仅作为整个程序的入口,而且也管理着整个程序中的类,其中包括WelcomeViewwelcom

43、eView、GameViewgameView、AboutViewaboutView、HelpViewhelpView以及HandlermyHandler。上述类都是View的子类,每个类都有着各自的作用,WelcomeView类用于生成欢迎界面,GameView类生成游戏界面,AboutView类生成引用界面,HelpView类生成帮助界面,HandlermyHandler类用于线程通信并更新控件15。除了所管理的每个类,KLSDActivity的每个成员函数也是不可或缺的一个因素,其中包括:onCreat():止匕方法是Activity类的“大门”,调用此方法可以将游戏模式切换成全屏模式并初

44、始化欢迎界面。initWelcomeView():此方法用于欢迎界面的切换。initGameView():切换游戏界面。initHelpView():初始化帮助界面。initAboutView():初试化关于界面。KLSDActivity类之所以能够管理其他类,控制每个类之间的切换以及使设备显示特定的界面,都是依赖于Handler来实现的。4.1.2 WelcomeView类的实现WelcomeView类是程序用于开机动画界面的实现,其流程图如图4.1所示:烟台南山学院本科毕业设计(论文)第14页图4.1WelcomeView类功能流程图WelcomeView类用于实现欢迎界面。该类是Surf

45、aceView类的子类,利用双缓冲机制进行绘图。可以更为有效的控制界面的格式、大小以及在屏幕中的显示位置,通过SurfaceHolder类中的getHolder方法获取16。在绘制屏幕时必然会使用到画布,而要想使用画布必须先利用lockCanvaspJ法锁定画布,然后在画布上进行操作,当所需界面在画布上绘制完成时,利用unlockCanvasAndPos打法解锁画布,才可以将所绘制的界面展示在屏幕上。为了更加方便的管理和使用动画界面所需的帧图片,其ID存放于BitmapID数组中,在后续操作中只需对BitmapID数组进行增删操作即可。作为WelcomeView类的构造器,publicWelc

46、omeView(KLSDActivityactivity)。可以初始化图片、动画线程以及刷帧线程,其中界面的绘制依赖于onDraw()方法,屏幕的监听用onTouchEvent()方法,此方法以用户点击的坐标位置确定用户点击的是哪里,并将消息发送回Handler类。4.1.3 WelcomeViewDrawThread类和WelcomeViewGoThread类的实现程序员为了使游戏更加吸引用户,在进入游戏时做了一段动画欢迎界面,为了实现这一功能,新建了WelcomeViewDrawThread类,用于刷新动画界面,而动画界面的生成则是依赖于WelcomeViewGoThread类,这两个类都

47、是Threa我的子类,因而都必须重写父类的run()方法才能实现所需功能。烟台南山学院本科毕业设计(论文)第15页WelcomeViewDrawThread类的run()方法的代码如图4.2所示:publicvoid(/重写的nm方法Canvas匚:/声明里布while(this,flag)1循环c=null:try/锁定整个画布c-this,surfaceHoIder.lockCanvas(null);synchronised(this,surfaceFfoIder)/同步weLcomeView.onDraw(c):调用绘制方法firially用firELly保证一定被执行if(cI-nul

48、l)"更新屏幕显示内容this,surfac©Holder.unlockCanvasAndF'ost(c);)try(Threa山日日印(塞如泉皴):睡眠指定室秒数catch(Exception已)/捕获异常e.printStackTrace0打印异常信息1?WWS!V¥>WWWyWWWVW图4.2WelcomeViewDrawThread类的run()方法WelcomeViewDrawThread类的run()方法主要控制c的值,当c为空时,通过调用WelcomeView类里的onDraw()方法,绘制完背景图片后,cffl不为空,此时屏幕解锁,画

49、布被初始化,c值又为空,通过释放和更新屏幕显示的内容,达到刷帧效果。WelcomeViewGoThread类中run()方法代码如图4.3所示:烟台南山学院本科毕业设计(论文)第16页publicvoidrunC)重写的tun方法法while(flag)循环weLcomeView.dr卸工ndex+;/自加if(welcomeViewidrawlndeat>we1comeView.bitmapsIP.length-1)WWWWVVWWVWqrt.VWWWWWWWVWWWWWWWVVVW%weLcomeView.drswlndex=weIcomeVieuf.bitmapsID.length

50、-10;if(welcooneView»drwlndat%5=0),weLccmeVieur.drring=IwelcameView.drawStrnjig;tryThreai.TJpezJ(EleepSpan:/睡眠FAAAA«lXv*rt*a*vA<!catch(Exceptione)e*PrintStackTrC):打E|异常信息图4.3WelcomeViewGoThread类中run()方法WelcomeViewGoThread类中的run()方法通过控制drawIndex的值,使drawIndex实现累加以此判断是否达到数组的最大长度,如果到了,则判断dra

51、wIndex的数值是否为5,如果等于5,则改变drawString的值,如果不等于5,则drawIndex减去10,再次进入循环,以此达到闪动效果。4.1.4 HelpView类和AboutView类的实现游戏帮助和游戏说明的实现是通过HelpView类和AboutView类来实现的。这两个类通过onDraw()方法来绘制界面且两者十分相似,因而只对其中一个进行分析,这里选择HelpView类,其代码如图4.4所示:烟台南山学院本科毕业设计(论文)第17页publicHelpVieur(KLSDAutivityactivity5superactivity);this,activity=acti

52、vity;/I导至"actiwity6J弓I用surfaceHoldsr=this.getHolder():/,1,1-j2217:iccH:IdergetHolder0.adcCallback(this);添加Callback接口的实现helpEitnap=BitnapFactory.Jeri?sciirr(£etResources(5?R.drawabl曰.用摩加):publicvoidonDraw(Canvascanvas/绘制方法-'WVWWVWcanvas.draiuColor(Colar.忸口®:/背景色canvas.dravBitJuapQw

53、lpBitiftaj0,0,null);"绘制图片)publicbooleanonTouchEvEnt(MotianEventevent)/舞盘监听方法vhAAiVwAAAi%vAAAAvAAAZj>iAAi<i«ft<if(eventsgetActianO=MotionEuent.水工TO期ZO砌"屏瞽被按下doublex=evertt.getX():doubley=event.etYO;/得到坐标if(x>270虢x<310皮曲y>440自&yq48口)",点击确定按钮act1vitykmyHandler.

54、sendEmptyMesssfe(2):returnsuper.onTouchEventCevent);图4.4HelpView类的onDraw()方法作为帮助界面的构造器,publicHelpView(KLSDActivityactivity)需要先获得surfaceHolde评口activity,然后加入Callback的实现类并初始化图片资源。通过onDraw()方法,绘制帮助界面的背景。通过onTouchEvent()方法对键盘进行监听,系统通过用户点击屏幕的位置调用此方法来判断是否返回并将消息发送给Handler行处理。4.2 游戏界面相关类的实现游戏界面向用户展示了游戏区,计时区,

55、及功能区,每个区域实现一个功能,其流程图如图4.5所示:烟台南山学院本科毕业设计(论文)第18页图4.5游戏界面流程图4.2.1 GameView的实现GameView是用户正式进行游戏的界面,GameView在初始化时候完成一系列资源的读取,利用GameViewDrawThrea锻程来进行对图片的刷帧操作,TimeThrea锻程对时间进行即时更新17。当用户开始游戏时,系统会调用DrawKeyThread线程完成数字键盘的绘制。GameView作为SurfaceView的子类,同样需要实现onDraw()方法,GameView类中的onDraw()用于游戏界面图片的绘制、时间显示、选题按钮提

56、示以及数字框提示。当用户点击屏幕时,系统会调用DrawKey()方法来绘制数字键盘并且通过对surfaceCreated(和surfaceDestroyed()W个方法的调用来完成系歹!J相关线程的启动及调用。4.2.2 TimeThread的实现TimeThread线程是用于记录用户进行游戏的时间长短,其代码如图4.6所示:烟台南山学院本科毕业设计(论文)第19页publicclassTimeThreadextendsThreadGameViev鬃期期肛声明逛侬港我的引用booleanflag=true;循环标志位publicTime-Thread(GameViewgsjaeVlew)/构造器*this.£3!16m62且葡%.何;薄到G31牝已通弓|用publicvoidrun。/重写的run方法while(flag)ameView.tine+:时间自加tryThread,亢白物(10口。);/睡眠一秒种JcatchCEzceptiane)/捕获异常已日盅蛉担助融X);打印异常信息)图4.6TimeThread线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论