基于Android平台的24点游戏设计与实现需求分析_第1页
基于Android平台的24点游戏设计与实现需求分析_第2页
基于Android平台的24点游戏设计与实现需求分析_第3页
基于Android平台的24点游戏设计与实现需求分析_第4页
基于Android平台的24点游戏设计与实现需求分析_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Android平台的24点游戏设计与实现Android平台24点游戏设计与实现摘要随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来。目前国内最常见的移动开发平台有Symbian,iPhone,WindowsPhone以及当下正在逐步兴起的Android,目前为止国内已经有很多Android系统的用户。在80年代流行一种数字游戏,我们称之为“24点”。用扑克牌实现24点,就是从扑克牌中任意抽出4张(数字表示为1-13),用加、减、乘、除的方法是结果成为24。程序实现由系统随机产生4张牌,玩家输入表达式,然后判断表达式是否合法且等于24。借

2、鉴网上的多种游戏,我用Android手机平台开发设计了24点游戏,并在eclipse模拟平台环境下实现基本功能的游戏程序(类似于纸牌游戏)。其开发开发包括较多的计算机技术(多媒体技术、程序设计、数据结构、计算机网络、数据库技术、人工智能和软件工程等),作为本科毕业设计选题,具有较强的综合性,达到综合锻炼所学知识的价值。关键词:Androideclipse手机模拟平台24点游戏Abstract:Withthegrowingpopularityofmobiledevicesandmobiledevicehardwareupgrade,mobiledevicesbecomemoreperfectsy

3、stemplatformformobiledevicesareincreasinglypickingup.Atpresent,themostcommonmobiledevelopmentplatformfortheSymbian,theiPhone,WindowsPhone,aswellasthecurrentisgraduallyemergingAndroid,sofarthecountryhasalotofusersoftheAndroidsystem.Inthe1980sapopularnumbersgame,whichwecallthe"24point".24poi

4、nts,withplayingcardsandpokerinanyoutoffour(numerals1-13),withaddition,subtraction,multiplication,inadditiontothemethods,resultsbecome24.Theprogramrandomlygeneratedbythesystemoffourcardplayersentertheexpression,andthendeterminetheexpressionisvalidandequalto24.Learnfromtheonlinevarietyofgames,IusetheA

5、ndroidmobileplatformdesigneda24-pointgame,eclipsesimulationplatformenvironmenttoachievethebasicfunctionsofthegameprogram(similartoacardgame).Developmenttodevelopmorecomputertechnology(multimediatechnology,programming,datastructures,computernetworking,databasetechnology,artificialintelligenceandsoftw

6、areengineering),asagraduatedesigntopics,withastrongintegratedtoachieveacomprehensiveexerciselearnedthevalueofknowledge.Keywords:Androideclipsephonesimulationplatform24-pointgame1绪论1.1引言随着3G时代的来临和高性能手机的普及,单一的通信功能已经不能满足人们对手机的需求,人们对高质量的、丰富的手机游戏的需求正在不断增强。目前,手机的开发平台主要包括苹果的IOS、Google的Android、微软的Win7和诺基亚的S

7、ymbian等,其中Google的Android操作系统因其稳定性、开发性、低成本等特点,受到广大手机游戏开发者关注。Android系统作为最近几年才涌现的智能手机操作系统,Android操作系统无疑是一个新手,多家智能手机制造商不断推出基于Android操作系统的智能手机,使Android操作系统的市场份额以及影响力与日俱增,其前景正被越来越多的人看好。本文侧重于Android的应用软件开发。主要的研究内容是Android操作系统平台下的游戏软件开发应用。本文从实际的开发案例出发,从一个开发者的角度,独立的从游戏需求分析、游戏功能设计、游戏开发设计、游戏运行测试等角度来进行分析和阐述。最终完

8、成了”24点游戏”的移植和开发,重点在于实用性和应用性。本文的内容主要有以下五个方面:1、智能手机研究现状以及几种操作系统的研究分析,GoogleAndroid系统平台和其他系统平台的比较。2、系统分析阐述,包括主要研究内容、研究目标等其他性能分析3>Android操作系统以及开发平台的相关研究,主要是Windows开发平台下Android开发平台的搭建。4、基于Android操作系统的“24点游戏”的设计,包括模块设计、界面设计及流程图等内容。5、“24点游戏”程序开发,包含文件结构、关键代码等。6、”24点游戏”运行的测试,在真实智能手机上的安装、运行、卸载等相关测试。7、论文的总结

9、和对未来的展望。本文解决了风行一时的经典“24点游戏”在Android系统下的开发问题。通过对Android的详细介绍,开发人员可以从中了解到其自身的作用,两三年来,随着Android手机的诞生,其无可替代的灵活性与轻便性致使Android手机成为智能手机市场的又一亮点,它的前景无可限量,必将在我们以后的生活中发挥着重要的作用。1.2文献综述1.2.1 国内外研究现状述评和发展趋势目前国外各软硬件厂商已经推出过多款手机操作系统,下面简单介绍一下现主流手机操作系统。现阶段使用较广泛大家也相对熟悉的手机操作系统是由诺基亚公司主导推出的Symbian操作系统。Symbian是为手机而设计的操作系统,

10、它是一个实时性,多任务的纯32位嵌入式的操作系统,具有低能耗,内存占用较少等特点。现在流行的Symbian系统有以下四个版本,分为S40,S60(第二版),S60(第三版)和S60(第五版)为触摸手机版本。iOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPodtouch以及iPad使用。就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。iOS的系统架构分为四个层次:核心操作系统层(theCoreOSlayer),核心服务层(theCoreServiceslayer),媒体层(theMedialayer),可轻触层(theCocoaTouchlayer

11、)。系统操作占用大概240MB勺存储器空间WindowsMobile系列操作系统是从微软计算机的Windows操作系统演化而来的。WindowsMobile系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件配置(如内存、储存卡容量等)上也比采用其它操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。PalmOS属于Palm公司开发,是一种32位的嵌入式操作系统,是一套专门为掌上电脑编写的操作系统,是一种轻量级、比较开放的操作系统,占用的内存非常小。现在多用Paml公司生产的手机上。该系统允许用户在其基础上编写和修改相关软件,使支持

12、的应用程序更加丰富多彩。Palm系统与其他手机系统相比在其它方面也还存在一些不足,如Palm操作系统本身不具有录音、MP3B放功能等,但是可以通过加入第三方软件或硬件设备来实现。相对国外手机系统百花齐放的局面,国内手机操作系统则处于刚起步的阶段。目前国内还没有自主研发并商品化的手机操作系统。当然近些年来国内企业和我国政府在这方也投入了大量的人力和物力。同时也取得了一定成果。在2009年8月,由中国移动所主导开发OPhone¥台面世。OPhoneFF台采用开源的Linux作为系统内核,借鉴并兼容Android平台,集成灵活高效的Java应用框架,充分借鉴当下主流手机操作系统所具有的良好

13、用户体验,提供了一套完整的电话解决方案和各类移动数据业务解决方案。据Gartner最新数据显示,2010年第二、三季度全球智能手机销售继续大幅增长,其中第三季度安卓占全球智能手机市场的25.5%,仅次于塞班,成为第二大智能手机系统。2010第二、三季度与去年同期相比,增度分别是15.4%及22%增势迅猛。而塞班系统较09年的市场份额,尽管终端销量有大幅度提升,但增势下滑10%形势非常严峻c其他操作系统的表现则要平稳很多。皖情量环比城建1009年Q320H年Q3Symbijn2948.01isn.4S44.6%安京2050.0025.5%142.453.5%iOS134S.4J16.7%-(4.

14、04r1%R1MU.S%时丁Kbfobik224.79)彤325.997.9%LimaI的JI2,1%19L854一7%OitrrOS脚震:L院61,251.5%Totil8053.26100%410933100%蛹耒谑:Gm,3G门户整理图1-1手机系统比较安卓是首款开源代码的操作系统,采用Linux内核,开放手机联盟(OHA成员可以任意使用和修改安卓的SDKa件包。系统的开源性使其具有良好的拓展性,一方面,为众多移动应用开发者提供了良好的系统性平台,有利于移动应用的集合;另一方面,终端厂商可以针对自身的特殊需要“定制化开发”。与此相比,尽管2010年2月,塞班基本完成开源工作,但由于代码臃

15、月中,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。据Informa预测,2012年,安卓手机销量将超过诺基亚塞班手机,届时安卓将成为全球最大的智能手机平台。谷歌表示目前安卓手机每日平均激活量为20万部,销售速度加速上涨。我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实。安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。止匕外,谷歌通过OH颂合众多厂商进行系统研发

16、,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。1.2.2 选题的意义和价值随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善。适当的娱乐游戏对人们的业余生活是不可必缺的,它给人们的业余生活添加了很多乐趣。我用Android手机平台开发设计了24点游戏,使其在android手机系统风行的今天更满足人们对手机游戏的追求。同时,作为本科毕业论文设计,其具有较强的综合性,游戏开发过程中运用多种计算机技术(多媒体技术、程序设计、数据结构、计算机网络、数据库技术、人工智能和软件工程等)。在进行毕业设计的整个过程,学习或运用的不仅仅是四年的学校知识,更多的来自于前沿

17、的学术理论思想,与前沿科技接轨,达到综合锻炼所学知识的价值。1.2.3 研究内容根据近段时间学习Android平台游戏设计经验和参阅大量关于Android运用文献,结合现有技术,基于游戏动画设计的基本原理。设计一个基于Android平台24点的游戏应用。主要包含随机发牌模块、输入求解表达式模块、判断求解表达式正误、计算表达式模块和判断表达式的正误模块。1.2.4 研究方案和技术路线利用网络查阅国内外Android系统及Android平台开发、游戏设计原理等相关资料和浏览大量的期刊与文献,进行深入分析与研究,借鉴其开发经验和经典开发案例。同时,了解国内外Android系统开发者社区,与前沿And

18、roid开发者接触交流,获取更多信息与技术。Android是一个开源的系统,它底层是基于Linux的操作系统,本文拟采用Android开源系统技术,利用Java语言和eclipse模拟平台进行24点游戏的编写,实现模块化结构,独立开发各个功能模块,尽量降低各模块之间的耦合,在各个功能模块实现的基础上构建灵活方便的界面。2系统分析(1) 研究目标我所做的基于Android智能手机的平台的24点游戏设计和实现,采用java语言作为编程语言,用eclipse作为开发平台,android_sdk作为运行环境,结合实际用户的实际需求,实现24点游戏的AI算法,即相关的界面美化。并且,需避免在市场常见24

19、点重算法界面不友好的实现,给予用户更好地操作感受,同时,在程序结构上需要应用充分采用面向对象的思想,以便后期对游戏功能的增加,以及对于在其他嵌入式设备开发提供方便。当看着自己把功能一个个实现,把错误一个个调试的这个过程,都会收获很多东西,成为今后学习中一笔不可或缺的财富。也让我明白:真正的“好程序”不只是运行了,还要满足一大堆条件的(可读性、健壮性、可维护性、高效性)等等。(1) 基本功能描述24点游戏是一种是用一种使用扑克牌进行的益智游戏,游戏内容是:从一副扑克牌中抽去大小王后剩下52张,任意抽取4张牌,把牌面上的数运用加、减、乘、除和括号等进行运算得出24点。每张牌都必须使用一次,但不能重

20、复使用。在不同版本中,对J、Q和K的处理有细微的差异。一个常见的版本是把J、Q和K去除,或当成10处理;还有一个版本是把J、Q和K对应表示为11、12和13.本次设计采用将J表示11、Q表示12和K表示13,使4张牌在1-13这13张牌中随机抽取。(1) 系统功能用例描述(1) 功能需求(时序图)分析(1) 输入输出要求输入的运输符只能是+、-、*、/、(、)六个,输入的数字为程序随机产生的四个数,而且每一个数都只能用一次。(1) 性能分析模拟平台启动速度慢、程序响应速度快、信息处理速度快。(1) 运行环境需求操作系统:Android手机基于Linus操作系统支持环境:Android1.5-2

21、.3版本开发环境:Eclipse3.5ADT0.95(1) 小结本软件是一个Apk应用程序,启动程序后可进行开始游戏选项、排行榜选项和游戏模式选项,可以通过按钮选择进行不同选择。进入游戏主界面后随机生成四张数字卡片,并在按钮上显示随机数字。用户通过数字和运算符组成24点的正确解与错误解,同时计时开始。用户输入后点击确定按钮如正确可提示信息“恭喜你,回答正确”,输入错误信息后则提示“很遗憾,答案不正确”,用户也可选择“查看答案”或“无答案”按钮或进入下一题。从上面的描述中可以基本了解软件的功能需求:(1)启动Apk应用程序;(2)选择游戏模式:默认模式为争分夺秒,可选择题海无边;(3)显示界面:

22、通过随机生成数字并在按钮显示当前随机数字,且有运算符和其它按钮用户输入表达式后求解并显示正确与错误(4)详细界面:用户输入表达式后求解并显示正确与错误或进入下一题3系统开发环境及相关技术1 Android开发环境介绍Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN司提供的JavaSDK(其中包括JREJavaRuntimeEnvironment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还

23、需要有Google提供的AndroidSDK。同时,还需要在Eclipse安装ADT为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。JavaSDKEclipseAndroidSDKADT1 Android开发平台搭建Android开发平台搭建步骤:(1)首先至U/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载JavaEE集成版本,可以为平台的搭建省下不少工作。接着再去后解压。第一步下载工序就结

24、束了。(2)双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->InstallNewSoftware->选项卡上的AvailableSoftware,点击右侧的“Add'输入http:/dl-拉菜单中选择刚才输入的网址。过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后找到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启E

25、clipse。(3)重启后选择Eclipse菜单中的Windows-Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。(4)在WindowsXP勺系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。另外其它安装:JDK下载JDK按照安装提示一步一步走。设置环境变量步骤如下:(a)我的电脑一属性一高级环境变量一系统变量中添加以下环境变量:JAVA_HOMEfi为:D:ProgramFilesJavajdk(你安装JDK的目录);(c)CLASSPATHfi为:.;JA

26、VA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA-HOME%bin;Path:在开始追加%JAVA_HOME%bjnNOTEM面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。安装完成以后,可以在检查JDK是否安装成功。打开cmd窗口,输入java-version查看JDK的版本信息。出现类似以下的画面表示安装成功:防命令提"口|回,hicrosoftUindous版本6-1.76回目同权所有552009MicrosoftCorporationo保留所有权利灯C;sllsers(jq>java-uersionjav

27、auei*sion'*1-6.0_18MJavaCTM>BuntimeEnuit'onment<build1.6-0_18-b07>JauaClientUM<build16_0-hl3Pnixedmode,ahaalng)C:Misers7(q>图3-1AndroidSDK安装下载android-sdk_r12-windows,下载完成后解压到D盘:运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Forcehttps:/."这项,再点击Ava

28、ilablePackages;选择希望安装的SDKS其文档或者其他包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包。在用户变量中新建PATHS为:AndroidSDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windowstools环垣式量qq的用户变里受量值PATHAndrsid-sdk-yr.'CQnfiFF_MOJiOST_C.MU;I*ti日bvTrw4Tm产=>谕yH*11、FRETJDATITflG3)褊辑U).|好工)确东而话一图3-2环境变量设置“确

29、定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK!不是安装成功。运行android_h如果有类似以下的输出,表明安装成功:图3-3验证AndroidSDK是否安装成功ADT安装打开EclipseIDE,进入菜单中的"Help"->"InstallNewSoftware",点击Add.按钮,弹出对话框要求输入Namef口Location:Name!己随便取,Location输入http:/dl-图3-4ADT的安装确定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT我们会看到下面出有DeveloperTools,

30、展开它会有AndroidDDMS和AndroidDevelopmentTool,勾选他们。如下图所示:图3-5下拉列表选项然后就是按提示一步一步nexto完成之后:选择Window>Preferences.,在左边的面板选择Android,然后在右侧点击Browse.并选中SDK各径,本机为D:AndroidDevelopandroid-sdk-windows,点击Apply、OK配置完成。创建AVD为使Android应用程序可以在模拟器上运行,必须创建AVD000000000000 .在Eclipse中。选择Windows>AndroidSDKandAVDManager11111

31、1111111 .点击左侧面板的VirtualDevices,再右侧点击New222222222222 .填入Name选择Target的API,SDCard大小任意,Skin随便选,Hardware目前保持默认值333333333333 .点击CreateAVD即可完成创建AVD程序首页界面设计根据需求分析可以知道,应用程序首页应包含三个主要的用户模块界面,这里需要进一步分析每个用户模块界面中应该包括哪些显示内容。在“开始游戏”按钮中,则直接进入游戏主界面。在“英雄榜”中,显示在不同游戏模式下当前的具体数据,主要包括争分夺秒模式下名次、正确题数及创建时间;题海无边模式下名次、答题用时和创建时间

32、。程序模块设计从功能需求上分析可以看出,整个应用程序应划分为4个模块,分别是程序启动、用户界面、后台服务和数据库适配器,各模块之间的关系如图4-1所示。图4-1系统模块从模块结构图中不难看出,后台服务是整个应用程序的核心,主要是“数据获取模块”,负责随机产生数字。后台服务在程序启动时就由AppWidgetProvider启动,也可由用户界面通过startService()进行启动,启动后的后台服务将一直保持运行状态。流程图4.3.124点游戏算法流程图是否继续图4-2算法流程图4.3.2后缀表达式转换的流程图开始计算后缀表达式的流程图4.3.3图4-4计算后缀表达式的流程图5程序开发5.1文件

33、结构与用途在程序开发阶段,首先确定“Android平台24点”的工程名为No.24,据程序模块设计的内容,建立No.24工程。No.24工程源代码的结构如图5-1所示。多NO.245TCB电电umedu,fjutno24由crrnedu.fjutno24,activity由cn,edu.fjut.no24,datat|).fjut.no24.d3t3,impl出,fjutno24Hdomaint£rm怎dufutn口245ervie由cmedu用utma24servkaimpl田crr<edu.fjutno24.util沙genGenera

34、tedJavaFiles产出MAndroid22JRESystemLibraryJavaSE-16为assetsbin:71AndroidManife5t.xml国pertieshs_err_pidl4472.logproguard,cfg国pertie5图5-1No.24-layout|X,app.xml,xmain_bakjcmly.main.xmlKrank_time_or_coijnt.xml国rank-xml6menu/jmain_merruHxmlX,rank_meriUiXnnl.Bvalues凶arrays.xmlKcolors.xm

35、l,Xipromptxml凶stringsHKml工程的源代码文件为了使源代码文件的结构更加清晰,No.24工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以及说明如表5.1所小。包名称文件名说明C.fjut.no24.activtyappActivity.java“程序首页”的ActivityC.fjut.no24.activityMainActivity.java“程序主页面”的ActivityC.fjut.no24.activityRankActivity.java“排行榜”的ActivityC

36、.fjut.no24.serviceGameService.java后台进程内服务C.fjut.no24.dateRankDAO.java后台时间服务C.fjut.no24.implForecastWidget.java实现AppWidget组件,并启动服务C.fjut.no24.domainWebServiceHelper.java网络数据狄取模块C.fjut.no24.utilcomputeUtil.java计算表达式工具类C.fjut.no24.utilDatabasehelper.java数据库访问工具类C.fjut.no24

37、.utilDateUtil.java日期工具类Android的资源文件保存在/res的子目录中。其中、/res/anim目录中保存的是产生动画效果的XMCt件,/res/drawable/目录中保存的是图像文件,/res/values目录中保存的是用来自定义字符串和颜色的文件,/res/xml目录中保存的是XMl式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表5.2:资源目录文件说明Animrotatecurrentweather.xml渐变透明度动画效果translatecloudleft.xml回向转换位置移动动回效果(从左至右)tran

38、slatecloudright.xml回面转换位置移动动画效果(从右至左)translaterain01.xml回向转换位置移动动回效果(从上至下)translaterain02.xml回向转换位置移动动回效果(从上至下)translaterain03.xml回向转换位置移动动回效果(从上至下)translaterain04.xml回向转换位置移动动回效果(从上至下)translaterain05.xml回向转换位置移动动回效果(从上至下)drawableDrawable-hdpl这个文件夹里是工程里所用的图片,如有表示随机卡片、数字等,此处不赘述。Drawable-ldplDrawable-

39、mdpilayoutapp.xml程序首贝贝囿布局Main_bak.xml程序显示主贝囿贝囿的布局Main.xml“详细显示”页面上边的显示当前的布局Rank_time.xml详细显示”贝囿卜布局Rank.xml“详细显布”页面卜边的显木的布局valuescolor.xml保存颜色的XML文件strings.xml保存字符串的XML的文件Xmlweatherwidget.xmlAppWidget的属性文件5.2数据提供者数据提供者ForecastProvider继承ContentProvider,是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同的应用程序

40、之问是不能够直接进行访问的。而CotentProvider为程序员提供了较高级的数据共享方法,应用程序可以指定需要共享的数据,而其他应用程序则可以在不知数据来源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。.程序首页代码(1)publicclassAppActivityextendsActivityimplementsOnClickListener(2)privatefinalstaticStringTAG="NO.24"(3)privateButtonbtnStartGame;/开始游戏(4)privateButtonbtnRankList;/游戏排行(5)

41、privateSpinnerspiGameModel;/游戏模式(6)privateStringgameModel;/游戏模式值(7)publicvoidonCreate(BundlesavedInstanceState)(8)super.onCreate(savedInstanceState);(9)setContentView(R.layout.app);(10)/获取开始游戏按钮并为其注册监听事件(11)btnStartGame=(Button川ndViewById(R.id.btnStartGame);(12)btnStartGame.setOnClickListener(this);

42、(13)/获取游戏排行按钮并为其注册监听事件(14)btnRankList=(Button)findViewById(R.id.btnRankList);(15)btnRankList.setOnClickListener(this);(16)/游戏模式下拉(17)spiGameModel=(Spinner川ndViewById(R.id.spiGameModel);(18)ArrayAdapter<CharSequence>adapter=ArrayAdapter.createFromResource(19)this,R.array.gameModel,android.R.lay

43、out.simple_spinner_item);(20)adapter.setDropDownViewResouce(android.R.layout.simple_spinner_dropdownjtem);(21)spiGameModel.setAdapter(adapter);(22)spiGameModel.setOnItemSelectedListener(newSpinner.OnItemSelectedListener()(23)publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,(24)intarg2,long

44、arg3)(25)/获取游戏模式(26)gameModel=spiGameModel.getSelectedItem().toString();(27)Log.i(TAG,"用户选择游戏模式"+gameModel+"");(28)(29)publicvoidonNothingSelected(AdapterView<?>arg0)(30)(31);(32)(33)/按钮事件处理(34)publicvoidonClick(Viewv)(35)switch(v.getId()(36)caseR.id.btnStartGame:(37)startG

45、ame();(38)break;(39)caseR.id.btnRankList:(40)viewRank();(41)break;(42)default:(43)break;(44)(45)(46)/开始游戏(47)privatevoidstartGame()(48)Log.i(TAG,"开始新游戏.");(49)Log.i(TAG,"选择的游戏模式>>"+gameModel);(50)Intentintent=newIntent();(51)intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);(

46、52)intent.setClass(AppActivity.this,MainActivity.class);(53)intent.putExtra("gameModel",gameModel);(54)this.startActivity(intent);(55)(56).程序主界面代码(1)publicclassMainActivityextendsActivityimplementsOnClickListener(2)privatefinalstaticStringTAG="NO.24"(3)privateGameServicegameServi

47、ce=newGameServiceImpl();(4)privateGamegame;/运行中的游戏(5)/privatebooleanchangedCard=false;(6)/privateCalculateThreadcalThread;/计算题目答案线程(7)privateAnswerTimeansTimeThread;/计时线程(8)privateControlCountDownTimercdTimer;/倒计时器(9)privateInitTaskinitGameTask;(10)privateCalculateTaskcalTask;(11)privateImageViewfir

48、stCard;/(12)privateImageViewsecondCard;/(13)privateImageViewthirdCard;/(14)privateImageViewfourCard;/(15)privateButtonbtnClear;/(16)privateButtonbtnSubmit;/(17)privateButtonbtnAnswer;/(18)privateButtonbtnNoAnswer;/(19)privateButtonbtnNextSub;/初始化游戏任务/计算答案任务第一张卡第二张卡第三张卡第四张卡清空确定查看答案无答案下一题(20)privateBu

49、ttonbtnFirstNum;/第一个随机数(21)privateButtonbtnSecondNum;/第二个随机数(22)privateButtonbtnThirdNum;/第三个随机数(23)privateButtonbtnFourNum;/第四个随机数(24)privateButtonbtnLeftBracket;/(25)privateButtonbtnRightBracket;/(26)privateButtonbtnAdd;/(27)privateButtonbtnSubtract;/(28)privateButtonbtnMultiply;/(29)privateButton

50、btnDivide;/(30)privateTableRowtrRemainTime;/(31)privateTextViewremainTime;/运算符左括号运算符右括号运算符加号运算符减号运算符乘号运算符除号剩余时间行(控制其是否可见)时间模式倒计时剩余题目行(控制其是否可见)题目模式剩余题数耗时做对题数做错题数表达式输入框等待进度对话框(32)privateTableRowtrRemainSub;/(33)privateTextViewremainSubject;/(34)privateTextViewwasteTime;/(35)privateTextViewrightSubject

51、;/(36)privateTextViewerrorSubject;/(37)privateEditTextinputExp;/(38)privateProgressDialogprogressDialog;/.程序算法代码:publicclassTwentyFourprivatestaticList<String>exps=newArrayList<String>();privatefinalstaticchar口op='+','-','*','/'publicstaticList<String&g

52、t;getExpression(Integer口v)exps.clear();intnums=newintv0,v1,v2,v3;evaluate(nums);returnexps;privatestaticvoidevaluate(intv)for(inta=0;a<4;a+)for(intb=0;b<4;b+)if(a=b)continue;for(intc=0;c<4;c+)if(a=c|b=c)continue;for(intd=0;d<4;d+)if(a=d|b=d|c=d)continue;check(v,newinta,b,c,d);evaluate(ne

53、wintv0,v1,v2,v3,newchar'+','+','+');evaluate(newintv0,v1,v2,v3,newchar'*','*','*');privatestaticvoidcheck(intv,intidx)for(inti=0;i<4;i+)for(intj=0;j<4;j+)for(intk=0;k<4;k+)if(i=j&&j=k)continue;evaluate(newintvidx0,vidx1,vidx2,vidx3,new

54、charopi,opj,opk);privatestaticvoidevaluate(intnum,charop)MyStackstack=newMyStack();/要入栈的操作数个数1-4intdataNum=0;if(op0=op1&&op0=op2)dataNum=num.length-1;for(;dataNum<num.length;dataNum+)/要入栈的操作符个数1-3intopNum=0;if(dataNum+1=num.length)opNum=op.length-1;intmaxOpNum=dataNum;if(dataNum=0)maxOpNum=1;repeat:for(;opNum<maxOpNum;opNum+)intnumCount=0;intdataIndex=0;intopIndex=0;stack.clear();while(dataIndex<num.length|opIndex<op.length)/操作数入栈for(inti=0;dataIndex<num.length&&i<dataNum+1;i+)stack.push(numd

温馨提示

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

最新文档

评论

0/150

提交评论