版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科实验报告课程名称:基于android的连连看的设计与实现实验项目:建筑连连看2015年4月28日建筑连连看摘要随着移动互联网的发展,智能手持设备越来越重要在我们的日常生活中,各种移动应用在智能手持设备和PAD平板电脑上应用。移动游戏是消费者利用随身携带的智能移动终端设备能随时随地来进行的游戏。近年来,手机游戏市场得到了很大的发展,手机游戏已成为使用率最高的手机娱乐应用。Android是Google基于Linux平台的开源手机操作系统,是首个为移动终端打造的真正完整和开放的移动软件。随着Symbian系统的逐渐衰落,Android在手机世界里和iOS平分天下,是移动互联网时代最理想的手机软件平台。研究与开发Android平台手机游戏,成为一个非常有趣而又有发展的领域。本文通过对Android系统架构和应用开发进行初步研究,设计一款连连看小游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,对游戏的菜单界面、屏幕绘制、时间控制、布局算法、连通算法、关卡设置、音效和动画进行了设计,并最终实现了一个界面友好、高效稳定和富有娱乐性的手机连连看益智小游戏。让人们在紧张的工作之余能够方便地放松心情。关键词:Android;Java;手机;游戏;连连看Building
LianliankanAbstractWiththemobileInternetanyway,smarthandhelddevicesareincreasinglyimportantinourdailylife,avarietyofmobileapplicationsinthesmarthandhelddeviceandthePADTabletPCapplications.Themobilegameisthegamewhichconsumersuseportablesmartmobiledevicesanywhere,anytimetoplay.Inrecentyears,themobilegamingmarkethasbeendevelopedgreatly,mobilephonegameshavebecomethehighestratesofmobileentertainmentapplications.AndroidisanopensourcemobileoperatingsystemofGooglebasedonLinuxplatform.Itisthefirsttrulycompleteandopenmobilesoftwareformobileterminals.WiththegradualdeclineoftheSymbianOS,AndroidandiOSaresplittingtheworldofmobilephone.ItisthebestmobilephonesoftwareplatformformobileInternetera.TheresearchanddevelopmentoftheAndroidplatformmobilephonegamebecomesaveryinterestinganddevelopmentareas.ThispaperthroughapreliminarystudyontheAndroidsystemarchitectureandapplicationdevelopment,designedasmallgamecalledLianliankan.Basedonthedetailedrequestsanalysisofthesystem,itdeterminedthefunctionalandperformancerequirementsofthesystem,thenitdesignthegame'smenuinterface,screendrawing,timecontrol,thelayoutalgorithm,connectivityalgorithm,levelset,soundandanimation,finallyitrealizedamobilephoneLianliankanpuzzlegamewhichhasfriendinterface,highefficiencyandisstableandentertaining.Allowpeopletobeabletorelaxafterstressfulwork.Keywords:AndroidJavamobileGameLianliankan目录TOC\o"1-3"\h\u1308建筑连连看 222710摘要 221848目录 416654第一章绪论 1167121.1课题背景 1322471.2国内外研究现状 2147181.3发展趋势 4299811.4课题研究意义 5283721.5论文结构安排 6221161.6本章小结 621064第二章基础知识与开发技术 7299082.1Android技术简介 71832.1.1Android基本知识 781662.1.2Android系统特点 9249672.1.3Android手机平台的优势 10184422.1.4Android手机游戏的市场价值 11142042.2Java技术简介 12206492.3游戏使用技术 1474942.3.1主要技术问题 14171372.4本章小结 1529591第三章系统分析与设计 16287063.1可行性分析 16134973.1.1操作可行性 16182403.1.2技术可行性 165053.1.3经济可行性 173373.1.4社会可行性 1785603.2功能需求分析 1783373.3系统基本流程 1858583.3.1系统流程图 18251553.3.2游戏详细过程流程图 1963523.4系统模块设计 2073.5图形连通算法设计 22273833.6系统风格定位 22176283.7本章小结 2312740第四章系统的设计与实现 24233494.1系统运行界面图 24119244.2开发环境的搭建 2794274.3单项功能的实现 2847844.3.1消除图片动画实现: 28128594.3.2剩余时间效果实现 28182754.3.3进度条效果实现 28243184.3.4游戏初始化 28152714.3.5判断消除图片 303064.3.6在两图片之间连线 3231184.4本章小结 3319920第五章系统测试与性能 35166055.1软件测试 35247795.1.1测试简介 35294255.1.2测试分类 3538725.1.3测试步骤 3623995.2游戏系统测试 3667065.3游戏性能分析 38259085.4本章小结 3822315第六章总结与展望 39261136.1结论 39128576.2进一步工作方向 3911927参考文献 4029917致谢 415272外文 42第一章绪论智能手机设备的迅速发展使得智能一体化的进度开始向物联网发展,从第一代超大规模的计算机到个人PC,到现在的PAD和PC+系列,计算机产品开始向微型化和智能化方向发展。从摩托罗拉发布第一台彩屏手机以来,智能手持设备不断更新,从当年的奔迈palm,到windowmobile和塞班,以及现在的IOS系统和,Andorid系统和windowsphone7系统的发布都使得手持设备越来越普及。游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民在选择空间狭小的同时,也必须明确的一点就是游戏本身所具有的强大的吸引力。它在让玩家打发时间的同时,可以让人实现在显示生活中不能实现的理想,得到在现实中不能得到的东西。而且游戏产业促动高科技技术不断升级,作为经济增长的一大支撑点,已经成为经济腾飞的“第四产业”。本设计将使用Java语言和Android平台实现出可以在模拟器上运行的连连看游戏。1.1课题背景现代科学技术的发展,改变了人类的生活,作为新世纪的大学生,应该站在时代发展的前沿,掌握现代科学技术知识,以适应社会的发展,能够独立完成面临的任务,作一名有创新意识的新型人才。Android是一个基于Linux核心(kernel)的开放手机平台作业系统。与WindowsMobile、Symbian等手机作业系统处在同一级别。对于设备制造商来说,Android是一个免费的平台。Android作业系统让设备制造商免除每出一台手机,就得被手机作业系统厂商的情况。对硬体开发厂商来说,Android也是个开放的平台。只要厂商有能力,可以在这个平台上自由加入特有的装置或功能,不受手机作业系统厂商的限制。对于手持装置的开发者来说,Android是个先进的平台。平台上的应用程式可相容于各种型号的Android手机,免去为各种不同手机机型开发的困扰。Android平台支援各种先进的网路、绘图、3D处理能力,可以用来提供更好的使用者体验。对于使用者来说,Android是一个用于手机的作业系统。使用者只要先申请一个免费的Google帐户,当使用者想换一台手机时,就可以在不同厂牌,同样使用Android作业系统平台的手机之间选择,并且很容易地将如联络簿等个人资料转换到新手机上。Android在Linux核心的基础上,提供了各种合用的函数库,和一个完整的应用程式框架。并采用较符合商用限制的Apache版权。在Linux核心的基础上提供Google自制的应用程式运行环境(称作Dalvik,与Sun的J2ME不同),并提供基于Eclipse整合开发环境(IDE)的免费、跨平台(Windows、MacOSX、Linux)开发工具(SDK),便于应用程式开发者学习、使用。免费、熟悉的跨平台开发工具,让具备一些物件导向观念,或视窗程式开发经验的开发者,能在一定时间内上手。1000万美元的大奖赛则提供了足够的诱因,让第一支Android手机正式面市前,就拥有了各式各样的应用程式可供使用。从不同角度来说,Android代表着一个崭新的开放原始码作业系统平台、一个友善的免费应用程式开发环境、一个与世界各地的程式开发者,站在相同起跑点上的公平竞争机会。而连连看作为一款经典的益智小游戏,一直以来都被众多的游戏爱好者喜欢,这个游戏,男女老少皆宜。游戏的吸引力主要在于,它在让玩家打发时间的同时,可以让人实现在显示生活中不能实现的理想,得到在现实中不能得到的东西。1.2国内外研究现状手机游戏(MobileGame或WirelessGame),是指消费者利用随身携带并具有无线网络联机功能的智能移动终端设备,能随时随地来进行的游戏。手机游戏最大的特点是其随时随地进行游戏的便利性。这些年来,手机游戏市场有了很大的发展,手机游戏已成为使用率最高的手机娱乐应用,占到各种手机娱乐应用比例的78.4%。在日本,手机游戏市场经历多年的稳定增长,市场规模已经超过了850亿日元。在美国,手机游戏作为美国手机用户最喜欢的移动应用之一,在iPhone和Android等智能终端推出后发展迅速。而在中国,根据易观智库产业数据库最新发布的《2010年第4季度中国手机游戏市场季度监测》数据显示,我国2010年手机游戏市场规模已达到32.9亿元,继续保持了较快的发展。通过图1-1,我们能看出近些年来我国手机游戏市场的发展。前辈告诉我你他妈就是个傻逼你说我说的对不对我就不说什么了我去我就是货系你家的任凭地方就卡的很疯狂计划我的死就快乐都开始就发了空间的了空间发生的路口附近了思考的减肥了思考的减肥了思考的减肥了思考的减肥死定了咖啡机收到了看法九点十分款到即发了开机速度快了飞机啊死定了咖啡机死定了会计法撒了贷款纠纷了空间死定了会计法来刷卡的减肥拉斯款到即发哦第三方思欧吉恩么了会计师费困窘继承,偶记死定了房间卡洛斯那臭小子跑男欧神诺东风破么v破旧买票死PDF呢跑男你水电费跑男破i三等奖飞利浦佳木斯的快乐方购买奶粉了贷款和管家婆IP就爱上破旧破接收到富婆就阿斯顿骗人频频【【市领导开房洒了可电脑撒旦肥婆为毛老公骗人码头ID覆盖骗人末公司发给弄死骗人吗挺凉快哪击破大哥平凡购买日国内的搜房刚频【马上打哦减肥的股发生的管家婆如梦哦in大佛寺更好看就那么说地方了看过进了第三方就gap搜救功夫片热哦i技能sjdi桑德菲杰刚卡了人我饿烧鹅花费比萨博的覅播撒吧手动阀iOS把你哦被佛i吧诶不覅U币我i阿尔U币费啥地方快乐金牛阿红圣诞节快乐房内UNUN爱哦哦偶尔回复苦涩和念佛if额案犯能多送发哦度能付款金额你必发噶的少年宫空降兵黑色大半年覅U盾黑发少年的别付款吧谁都爱很高黑色大丽花都护府卡机的废话啊就是迪欧放呢进四大佛家都覅就纳斯里卡打飞机破哦in空间不能打发黑色大发了呢看见光波i沧桑就hi噢诶好疯狂就随便你发了空间不破位了看见了阿斯顿佛罗就少打了覅就理解哦地方就饿了卡农is大姐夫了看见你手动哦is阿乐山大佛老卡大力神进阿飞了你看了较好的经费公开了见撒旦就发生的了空间费拉斯款到即发来看什么地方了尖沙咀的浪费SD卡o三等奖阿佛i交哦i进四大佛i接收到覅就是就是打飞机拉克丝将豆腐老卡撒娇的了空间累块积苏地方了看见送达了空间来了就图1-1近几年中国手机游戏市场规模的发展从上面的图可以看出,中国手机游戏的市场规模在近几年内一直保持了较快的发展,而且这几年的发展速度越来越快。预计到2012年,市场规模将达到65亿元,同比将增长66.7%。经过多年的发展,第三代数字通信(3G)技术获得了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于2007年11月推出了一个专为移动设备设计的软件平台——Android。Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器。Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。Android作为一个强大的工具,为我们带来了很多方便,特别是游戏方面,通过开发人员或Android爱好者的努力,网上也出现了很多为人称道的经典小游戏。游戏“连连看”是源有台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,“阿凡达连连看”以其精良的制作广受好评,并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着Android应用的流行,网上出现了多种版本的“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批玩家。通过对07至08年连连看小游戏行业市场热点,结合新浪、搜狐、雅虎、网易调查发布的数据分析发现,2009年小游戏热点集中在连连看小游戏领域,从2007年起风投对小游戏行业的投资案例明显减少,小游戏行业的投资目标主要集中在从事连连看小游戏企业和研发企业,小游戏行业在经历了高峰期后正趋于平静。2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。1.3发展趋势小游戏连连看发展现状及未来趋势的研究认为,小游戏依然是一个能给小游戏市场创造巨大财富的行业,因此急需寻求一个新的亮点。艾瑞咨询分析认为,选择有很大发展空间、且投资金额要求不高的小游戏连连看成了投资者再次介入小游戏行业的首选,其优势主要体现在以下两个方面:一方面:连连看小游戏产品定位合理外部有利因素促进行业发展(1)小游戏用户需求呈多样化趋势连连看小游戏填补空白据用户调研数据显示,有31.2%和用户喜欢益智类游戏,有25.8%的用户喜欢策略类游戏,使用这两类游戏作为核心的连连看小游戏最受欢迎,而连连看小游戏则是因为其特殊的呈现方式,从而争取到热衷于益智、策略游戏的玩家。(2)连连看小游戏用户属性的多元化奠定良好媒体价值基础在全体连连看小游戏用户的样本中,大专及以上学历者占总数的50.6%,在连连看小游戏用户中这一比例达到了62.8%;收入方面,38.4%的小游戏的游戏用户收入高于2000元,而仅23.5%的小游戏用户达到这一收标准。艾瑞分析后认为,从用户的学历、收入以及在游戏中的构成比例来看,连连看小游戏用户属性更高端,相较普通游戏用户其用户的消费潜力也更大,并且伴随连连看小游戏用户规模的快速增长,用户规模+高端属性将为连连看小游戏的媒体价值奠定良好的基础,而随着连连看小游戏产业的成熟和发展,其媒体价值将逐步被释放,未来也将有更大的开发空间。二方面:连连看小游戏行业正处于迅猛发展期上升空间巨大根据《2007-2008年中国连连看小游戏游戏行业发展报告》显示,2007年中国连连看小游戏市场规模为1亿元,按正常发展速度到2008年达到2.5亿,此后将保持30%以上的增长率,在2009年达到4.1亿元。2007年前连连看小游戏用户虽然已经达到了一定规模,但由于缺乏有效的赢利模式支持,整个行业始终处于停滞不前的状态。艾瑞分析认为突破了这个瓶颈后,连连看小游戏在未来2-3年将进入迅猛增长阶段,在乐观的情况下,3年中连连看游戏市场规模复合增长率将达到70.5%,在2009年中国网页游戏市场规模将达到4.4亿元。艾瑞咨询:连连看小游戏成为了2009年中国新热点。通过访谈与交流,目前业内人士普遍看好连连看小游戏的发展前景,部分行业人士表示,与08年相比2009年小游戏用户至少达到400%的增长,增长的主要动力来源于用户和运营商的双重发展。由于做小游戏门槛较低,能吸引许多中小型团队加入研究和运营的行列,当运营商与产品数量急剧增加时,整个市场也将被充分调动起来,从而达到一个成倍增长的形势。连连看小游戏的最大的优势在于无需下载客户端,这使得这类游戏能更方便地被移植到其他移动终端中,如手机、掌机。这给上网受限制的用户提供了很大便利。此外艾瑞咨询认为一旦政府逐步实施在一线城市中建设广域网的计划,随着该网络的建成,连连看小游戏也将迎来新一轮的发展。综上所述,连连看小游戏在今后的一到两年间将成为风投重点关注的对象,特别是一些中小型的研发企业,急需资本市场介入以帮助自己速度扩大市场占有率;另一方面资本市场也倾向于网页游戏这种投资小、回报快的行业。因此,2009年中国的新热点小游戏将是连连看小游戏。1.4课题研究意义现在小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。连连看游戏就是典型了!游戏“连连看”,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除,规则简单容易上手。游戏速度节奏快,画面清晰可爱,老少皆宜。不管你走到哪个游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏。完成这次毕业设计,不仅可以提高我对知识的综合运用能力,增加实现项目设计的经验,同时让我深入地了解一个安卓游戏的基本制作过程以及各项功能的实现,拓宽了自己的知识面。通过完成一个比较完善的安卓游戏,我对图像编辑、程序设计等各方面的知识有了更深的理解,也为以后的工作和学习打下了很好的铺垫。1.5论文结构安排整篇论文共分为六章,其主要内容安排如下:第1章绪论。介绍论文的选题背景,系统的基本功能的实现以及论文结构的安排。包括课题的背景资料简介、国内外研究现状和发展趋势、深入地介绍了课题研究的价值以及对未来的影响。为本系统的编写调试提供了强大的理论依据。第2章基础知识和相关的开发技术。这部分主要是介绍实现系统的技术支撑体系和系统的开发方法,。包括:开发模型,Android技术和Java技术等,并且详细介绍了Android的基本知识、各种特点、Android平台的优势和手机游戏开发的市场价值以及Java开发的详细步骤和游戏使用的主要技术及问题。。第3章系统可行性研究与需求分析。本章概要地阐述了本系统的体系结构,描述了各个功能模块,并分析了系统功能与系统角色和流程分析,展示了本系统的流程图,为下一章的系统的设计与实现打下基础。第4章系统的设计和实现。这部分主要介绍了本章通过对基于Android的连连看游戏的各个功能的实现,描述了系统的设计理念、基本流程和风格定位,展示了各个模块的模型和界面图,全面深刻的解析了该系统所具有的全部功能极其实现的方法。对每个界面的设计以及思路进行了详细的解释第5章系统测试与性能分析。描述了软件测试的基本方法、测试的总类和测试的步骤,对游戏进行了的系统测试和性能上的分析,达到了需求分析中的功能要求,实现了连连看游戏的设计。以上标志着本次基于Android的连连看游戏的设计与实现工作成功的完成。第6章总结。对整篇论文加以总结与回顾以及对未来的展望。1.6本章小结第一章主要是对课题的总体介绍,包括课题的背景资料简介、国内外一些研究的现状成果和发展趋势、还深入地介绍了课题研究的价值以及对未来的影响。为本系统的编写调试提供了强大的理论依据。第二章基础知识与开发技术2.1Android技术简介2.1.1Android基本知识Android是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。游戏规则是需选择一对相同的牌连线,但此连线是在避开其他牌子后,呈现的路径以不超过二转弯为主,如符合规定则消除此一对牌而得分。Android应用快速入门每一局里玩家需要在规定的时间内消除所有的牌子,当完成任务后,方能进行下一关,当出现残局时,游戏会自动重新洗牌。Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现,Google的目标是让移动通信不依赖于设备,甚至是平台。Android一词本意是指“机器人”,当然现在大家都知道它是Google推出的开源手机操作系统。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它是由一个由30多家科技公司和手机公司组成的“开放手机联盟”共同研发的,这将大大降低新型手机设备的研发成本。完全整合的全移动功能性产品成为“开放手机联盟”的最终目标。Android软件平台主要由五部分构成,它们分别是:关键应用程序、应用程序框架和组件、C/C++函数库、Java程序运行环境、优化了的Linux内核。关键应用程序。Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历、网页浏览器等,而更多有特色的Android应用程序还有待于广大开发者共同参与开发。应用程序框架及组件。Android应用程序开发基于框架和组件。Android本身已在其框架中提供了许多组件供应用程序调用,开发者也可在开发应用程序时顺带开发新的组件,并将该组件放入应用程序框架中,以供自己和其它应用程序调用。C/C++函数库。Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库等。Java程序运行环境。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。Linux内核。Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层。Android应用程序以各种组件(API)为基础,API是Android软件平台的重要组成部分,也是开发Android应用的关键所在。Android在Linux核心的基础上,提供了各种合用的函数库,和一个完整的应用程式框架。并采用较符合商用限制的Apache版权。当前活动程序Activity:作为最常用的应用程序组件,几乎所有Activity都会通过创建UI窗口与用户进行交流。Activity具有生命周期,它包含运行、暂停、停止等几个状态,状态间的转换可通过调用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法来实现。要开启新的activity,可以调用startActivity(Intent),或调用startSubActivity(Intent,int),后者通常和onActivityResult(int,int,String,Bundle)联合使用,以从一个activity获取某结果并返回给打开它的activity。图像显示View:View是最基本的UI构件,它在屏幕中占据一个矩形区域可用来显示文本、图像等内容,还可完成图像事件处理。常用的View方法有:inflate()(由XML文件生成View)、onDraw(Canvas)(对View进行填充)、onMeasure(int,int)(测量View的高度和宽度)、onLayout()(完成View的布局)、onKeyDown(int,KeyEvent)(View中有按键操作时被调用)、onFocusChanged(boolean,int)(当View得到或失去关注时被调用)、setOnClilckListener()(设置View点击事件监听器)。View也包含一些子类,如:TextView(布局文件中的文本显示)、EditText(布局文件中的文本编辑)、Button(按钮)、ListView(显示列表)。事件Intent:Intent抽象描述了想要执行的某种操作,它与startActivity一起使用可以开启新的activity,与startService一起使用可以开启后台服务。Intent最重要的作用还是加载activity,它是不同activity间的桥梁。Intent也可以被认为是一种概括操作行为的数据结构,它主要包括action(动作)和data(数据)两部分,此外它还具有一些附加属性如category(intent种类)、type(数据类型)等。常用的Intent方法有intent()(构造intent)、addcategory()(添加intent类型)、getAction()(获取intent动作)、getData()(获取intent数据)等。数据存取与共享机制ContentProvider:ContentProvider为应用程序提供一些访问方法,包括:Query(Uri,String[],String,String[],String,String,String)(数据信息的查询),insert(Uri,Contentvalues)(在Contentprovider中添加新数据),update(Uri,Contentvalues,String,String[])(更新Contentprovide中的数据),delete(Uri,String,String[])(删除数据),Gettype(Uri)(获取数据类型)。其中,Uri标明了ContentProvider存储的数据类型,在执行访问方法时都需依据Uri作为路径标识来确定要访问哪个ContentProvider。后台服务Service:Service是运行在后台的应用程序组件,不直接与用户交互。当前活动程序可以使用Context.StartService()开启一项后台服务,还可以通过Context.bindService()与后台服务通信。2.1.2Android系统特点Android系统具有如下5个特点:1.开放性。Google与开放手机联盟合作开发了Android,Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。2.应用程序无界限。Android上的应用程序可以通过标准API(ApplicationProgrammingInterface,应用程序编程接口)访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。3.应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。4.应用程序可以轻松地嵌入网络。应用程序可以轻松地嵌入HTML、JavaScript和样式表,还可以通过WebView显示网络内容。5.应用程序可以并行运行。Android是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引动注意。每个Android应用程序都存在于它自己的世界之中:默认情况下,每个应用程序均运行于它自己的Linux进程中。当应用程序中的任意代码开始执行时,Android启动一个进程,而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程都运行于自己的Java虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是隔绝的。默认情况下,每个应用程序均被赋予一个唯一的Linux用户ID,并加以权限设置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然,也有其它的方法使得这些文件同样能为别的应用程序所访问。使两个应用程序共有同一个用户ID是可行的,这种情况下他们可以看到彼此的文件。从系统资源维护的角度来看,拥有同一个ID的应用程序也将在运行时使用同一个Linux进程,以及同一个虚拟机。2.1.3Android手机平台的优势现在常见的智能手机平台有:Symbian、WindowsMobile、PALM、Blackberry、iOS等。Android平台的优势主要体现在以下方面:一方面:开放性Android平台是开放性的平台,允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。二方面:挣脱运营商的束缚在过去很长的一段时间,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都要受到运营商的控制。自从Android上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不再是运营商口中的笑谈。三方面:丰富的硬件选择这一点还是与Android平台的开放性相关。由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各异的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。例如你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可Symbian中优秀的软件带到iPhone上使用、联系人等个人资料更是可以方便地转移。四方面:开发手机软件不受任何限制Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,如此一来会有多少新颖别致的软件诞生。五方面:无缝结合的Google应用如今叱咤互联网的Google已经走过了10年度的历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。正因为Android具有以上的优越性,所以2010年末数据显示,仅正式推出两年Android操作系统就将要超越称霸十年的诺基亚Symbian系统,使之跃居全球最受欢迎的智能手机平台。2.1.4Android手机游戏的市场价值随着计算机技术和移动通信技术的快速发展,手机用户的数量越来越多,用户在挑选手机设备的时候己经不再拘泥于基本的通话功能。而新的技术从某种程度上提高了手机设备处理数据的能力,因而可以在手机上添加许多新的功能,以满足用户多样性需求。为此已经有越来越多的研发机构或部门着手研究开发手机应用软件。手机游戏作为手机上的应用软件类型之一,更是深受广大用户的喜爱。由于手机硬件资源有限、屏幕小、游戏时间短等特点,使得手机很适合运行那些剧情简单、操作方便、有益于提高敏捷性和智力开发的游戏。Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制。这是因为游戏玩家的核心需求是统一的,那就是:娱乐与打发时间(乃至更高层面的竞技需求和群体认同需求),这种需求附着于特定的社会发展阶段,不受地域的限制,甚至于能够穿透文化壁垒。因此,绝大多数种类的游戏都具备传染性与普适性,每一个售出的游戏都将会点燃周围潜在玩家的激情,最终吞噬整个需求市场。由此可知,几乎每一个Android手机用户都是游戏的需求者,都是潜在的顾客,现今的1000多万Android用户不过是冰山一角,随着Android手机市场进一步壮大,游戏的市场容量将具备更大的增长空间。综上所述,Android平台相比其他智能手机平台有许多优势,这些优势使Android发展迅速,而Android游戏作为Android手机最主要的应用,其市场价值有目共睹。鉴于现阶段Android游戏研究开发的人数较少,游戏产品数量也较小的现状,对Android游戏的研究具有很大的意义,不仅仅需要研究Android游戏开发中的图形图像、人工智能等关键技术,更重要的是研究Android游戏的开发框架,以及Android游戏开发不同于别的平台游戏开发的相关技术实现等内容。受益于近年来移动通信市场的持续快速增长,我国手机产业高速发展,成为新的国民经济增长点,带动了一系列相关产业的发展。随着网络、通信和信息技术的突破性进展,Android手机在全球爆炸性的增长并且迅速打入中国市场。在这一前提下,手机终端游戏的开发成了热门行业。Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。连连看游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是游戏本身所具有的强大的吸引力。游戏“连连看”,只要将相同花色的两张图用三根以内的直线连在一起就可以消除,规则简单容易上手。游戏速度节奏快,画面清晰可爱。总是排在受玩家最欢迎游戏排名前5位的连连看,休闲、趣味,且不分男女老少、工薪白领,在娱乐的同时还可以训练眼明手快及增强逻辑判断能力。是一款适合大众的经典小游戏。游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流、沟通,通过游戏还可以认识更多的朋友。Android系统手机在中国已经火热流行开来,设计本课题通过查阅相关资料可以促进自己了解更多Android手机前沿信息,理清软件开发流程,进一步加固对Java知识的运用。对以后致力于Android应用程序开发奠定基础。Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制。连连看游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本程序将四年来所学的专业知识和其他方面的知识融入到实际应用中。通过此次课题的设计,掌握如何制作一个游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。2.2Java技术简介Android以Java作为开发语言,JDK是进行Java开发时必需的开发包。进行开发前先要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们的首选。Eclipse是一款非常优秀的开源IDE,Google官方也提供了基于Eclipse的Android开发插件ADT,Android平台为开发者提供了源码开放的软件开发包(SDK),它包含了使用Java语言开发Android平台应用的必要工具和组件(API)。在大量插件的配合下,完全可以满足从企业级Java应用到手机终端Java游戏的开发。Java语言的学习热潮并没有因为时间的推移而消退,相反,由于计算机技术的发展所带来的新应用的出现,Java越来越流行,这种情况是以往程序设计语言在其生存周期内所不多见的。Java语言之所以这样长盛不衰,一是因为其众多的技术特点与现今的应用十分合拍,可以覆盖大部分的需求;二是因为SUN公司不断推出新的版本,完善Java自身的功能。有了这两点,Java语言成为程序员首选的程序设计开发工具就在情理之中了。Java技术是一门编程语言,也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。(题外话:Java热门的原因之一就是一个跨平台的概念,和跨平台类似跨浏览器的好处也是如此,这也是现在AJAX技术流行的原因之一。另外现在热炒的RIA富客户端的概念下的技术除了AJAX外还有Adobe的Flash/Flex,微软的SilverLight,SUN的JavaFX等,个人更看好Flash/Flex,原因是Flash插件在浏览器端占用率很高)。Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java、C、VB、C++依次排名前4位,这排名本身不说明什么,至少也是工业界对编程语言使用上一个侧面的反映吧。Java编程语言与众不同之处在于:Java程序既是编译型的(转换为一种称为Java字节码的中间语言),又是解释型的(JVM对字节码进行解析和运行)。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式;解释器是JVM的实现。这段是摘自网上的,编译原理学的不是很好,对这门语言的背后运行机制理解到这样了。Java平台是一种纯软件平台,它有三个版本JavaSE、JavaEE、JavaME。JavaSE(JavaPlatform,StandardEdition)这个版本以前叫做J2SE,后来版本号从1.4直接跳到5.0,其实也就是1.5,所以就叫成JavaSE5.0。目前Java开发人员使用较多的版本是5.0,当然还有JavaSE6.0这个更新的版本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE还包含了支持JavaWeb服务开发的类,并为JavaEE这个版本提供基础。虽说桌面应用程序,Java一直不被看好,但也稍微提一下,负责桌面GUI开发的类库我知道的有:JDK自带的主要是AWT/SWING这个Java原生类库;也可以使用IBM的SWT/JFace这个第三方类库。开发工具我了解的有:NetBeans(最近已经是6.0final版了,做GUI有使用VB的感觉),Eclipse(SWT/JFace这个项目其实就是做Eclipse项目时扩展出来的,所以对SWT/JFace支持的也不错)。JavaEE(JavaPlatform,EnterpriseEdition)这个版本以前叫做J2EE,也就是大家可能听得比较多的,也是Java比较流行的领域,Java的企业级版本。JavaEE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。根据项目大小、应用领域,技术平台的选择面还是很多的,除了JavaEE,还有.Net,LAMP组合(Linux、Apatch、MySql、PHP组合),相对来说比较新Ruby在RubyonRails的框架应用,后两者可能在相对来说比较轻量级的Web领域运用成功案例比较多,更重量的企业级潜力还有待挖掘。JavaME(JavaPlatform,MicroEdition)这个版本以前叫做J2ME。应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。Java开发工具很多,个人使用的IDE有Eclipse和NetBeans。Eclispe比较流行,各种插件也多,当然用起来也不错;NetBeans现在也是越做越好了,介绍这两个IDE主要是开源的,当然还有其它工具如JBuilder、IntelliJ、JCreator。这些IDE各有优势劣势,根据你开发的项目来选择了。2.3游戏使用技术2.3.1主要技术问题问题一:游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。问题二:游戏中为了美观,适用性强,不能全部通过简单的制作,到达游戏画面的要求。问题三:为了增加界面和道具的美观,游戏界面中添加了背景颜色、相关建筑物以及图片消除动画效果。问题四:游戏的地图不可能通过绘图来解决。否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小。否则就失去Android游戏较小的特点。问题五:游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。2.4本章小结本章介绍了本系统的开发环境,系统的开发方法,并且详细介绍了Android的基本知识、各种特点、Android平台的优势和手机游戏开发的市场价值以及Java技术简介、开发的详细步骤和游戏使用的主要技术及问题。第三章系统分析与设计3.1可行性分析3.1.1操作可行性游戏的操作可行性其实是一个游戏成功与否的关键,在很多著名游戏中游戏操作合理性经常成为玩家讨论的焦点,所以说游戏设计的合理性既是需要考虑的关键也是对玩家选择此游戏的主要吸引力。游戏时间不能过长也不能过短,在经过反复思考和老师的指导后,决定将时间做成每一关都是300秒。这一决定保证了游戏的正常完成,同时也是考虑到了制作时间的限制。在“连连看游戏”设计中,在游戏中玩家可以中途暂停游戏,等想玩的时候在继续游戏,不用每次玩游戏都从第一关开始。游戏进入第二关后,游戏复杂性和难度都将提升,图片消除后剩余图片将会自动往旁边靠齐。在这样的设计下,玩家可以感受到游戏的可玩性,同时也可以享受到完成游戏的成就感。3.1.2技术可行性Android以Java作为开发语言,JDK是进行Java开发时必需的开发包。进行开发前先要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们的首选。Eclipse是一款非常优秀的开源IDE,Google官方也提供了基于Eclipse的Android开发插件ADT,Android平台为开发者提供了源码开放的软件开发包(SDK),它包含了使用Java语言开发Android平台应用的必要工具和组件(API)。在大量插件的配合下,完全可以满足从企业级Java应用到手机终端Java游戏的开发。Eclipse是一款很好的动画游戏制作软件。它完全符合面向对象编程的要求,大大的提升了程序编写的能力。而且在Eclipse软件中,它自带了一些常用的组件。这为我们对这各组件开发提供了很大的帮助。因此在技术上是可行的。3.1.3经济可行性开发该系统所需的相关资料可以通过已存在的相关系统进行调查采集,所需的其他应用软件、硬件系统也易于获得。因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。3.1.4社会可行性本游戏丰富的道具和公共模式的加入,增强游戏的竞争性。多样式的地图,使玩家在各个游戏水平都可以寻找到挑战的目标,长期地保持游戏的新鲜感。Android游戏的大量玩家是年轻人,而现在年轻人的巨大的消费潜力使得本游戏开发具有社会可行性。3.2功能需求分析业务逻辑模块主要是对数据进行逻辑处理。主要可分为三大模块即欢迎模块、游戏模块、图形模块。(1)主界面模块打开软件后就是主界面,包含了“开始游戏”、“关于作者”、“关于游戏”和“退出游戏”四大模块。(2)游戏模块玩家点击“开始游戏”后,进入游戏界面。用户点击开始游戏后,系统开始倒计时,屏幕最上行有倒计时的时间进度条,一关时间为300s,第一关方块固定不动,第二关开始模块消掉后,剩余模块会自动往旁边靠,从而增加游戏的难度。如果玩家在规定的时间内将所有的图形消掉,系统提示玩家:恭喜你过关,并进入下一关。在系统所给的时间内没有消掉所有图形则提示:再接再厉!如果游戏出现了死锁的情况(也就是说没有图形可以相消的情况),系统会自动“重排”,如果重列用完了之后还出玩死锁情况,系统便自动再次重新排列,直到不出现死锁。(3)图形模块图形模块是用来管理图形的。包括图形的图片,图形的随机排列,图形的显示和消除等。游戏暂停与重新开始游戏暂停后可以选择继续游戏,从而继续没有完成的那关,如果选择重新开始则从第一关开始。3.3系统基本流程本游戏是一款基于Android的手机连连看游戏,玩家进入游戏后,进入主界面,显示开始游戏、游戏简介、关于作者和退出游戏。当玩家点击“开始游戏”后,玩家在规定时间内消去全部图片,即可进入下一关,如果没有在规定时间内消去全部图片,则失败。当玩家点击“暂停”后,将进入系统主界面,当玩家点击“关于游戏”后,可以看到游戏的作者介绍,还可以看到游戏的帮助文档,向玩家介绍本游戏的使用方法。当玩家点击主界面的“退出游戏”,即退出连连看游戏程序。3.3.1系统流程图系统流程图,如图3-1所示: 图3-1系统流程图3.3.2游戏详细过程流程图游戏详细过程流程图,如图3-2所示:图3-2游戏详细过程流程图3.4系统模块设计1.系统总体设计,总共分为四个模块,分别是:“菜单设计”,“界面设计”,“算法设计”和“消息响应设计”,如图3-3所示:图3-3系统总体设计2.系统详细设计:(1)界面设计,总共分为三个模块,分别是:“框架设计”,“地图设计”和“进度条设计”,如图3-5所示:图3-4界面设计(2)算法设计,总共分为两个个模块,分别是:“画线设计”和“消除算法设计”,如图3-6所示:图3-5算法设计(4)消息响应设计,总共分为三个模块,分别是:“鼠标响应”,“时间响应”和“绘图响应”,如图3-7所示:图3-7消息响应设计3.5图形连通算法设计每次用户选择两个图形,如果图形满足一定条件(两个图形一样,且这两个图形之间存在转弯少于3的路径),则两个图形都能消掉。给定任意具有相同图形的两个格子,我们需要寻找这两个格子之间在转弯最少的情况下,经过格子数目最少的路径。如果这个最优路径的转弯数目少于3,则这两个格子可以消去。在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。分3种情况:从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路径。若这三条路径上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了。1.相邻。直接连接消除。2.若不相邻的先在第一个按钮的同行找一个空按钮。(1)找到后看第二个按钮横向到这个空按钮所在的列是否有按钮;(2)没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮;(3)没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路径就通了,可以消了。3.若2失败后,再在第一个按钮的同列找一个空按钮。(1)找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮;(2)没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮;(3)没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路径就通了,可以消了。若以上三步都失败,说明这两个按钮不可以消去。3.6系统风格定位Android建筑游戏的主题是建筑,鉴于这点我的设计风格选择了建筑,图片基本上都是建筑相关的图片。这样设计首先是基于用户群,第二在参考了很多网上的连连看游戏,多数是纸牌造型,所以这样可以让本游戏变得更有个性。同时也尝试了很多其他的风格,但最后还是觉得建筑风格最适合本游戏。3.7本章小结本章概要地阐述了本系统的体系结构,描述了各个功能模块,并分析了系统功能与系统角色和流程分析,为下一章的系统的设计与实现打下基础。第四章系统的设计与实现4.1系统运行界面图安装界面,如图4-1所示:图4-1安装桌面界面主界面,如图4-2所示:图4-2主界面3.点击一次“新游戏”,点击“新游戏”,即将进入游戏运行界面,如图4-3所示:图4-3运行界面图4-4消除游戏成功后,即弹出成功对话框,如图4-5所示:图4-6成功选择游戏难度,如图4-6所示:图4-7难度选择4.2开发环境的搭建1.下载Eclipse首先我们需要下载Android开发时会用到的整合开发环境Eclipse。目前Android应用程式只支援使用Java来编写Android应用程式。所以开发前必须先安装Java开发套件(JavaDevelopmentKit,JDK)。各平台的JDK可至/下载。安装好JDK后,我们可以前往Eclipse网站下载Eclipse这个方便的整合开发环境。下载Eclipse时选EclipseIDEforJavaDevelopers或EclipseIDEforJavaEEDevelopers这两种版本,只有这两种版本才会预装EclipseJDT扩充套件。下载完同样先解压缩到适当目录下。2.安装EclipseEclipse不需要安装,只要确认你的系统上有安装Java,即可直接开启Eclipse资料夹,点击Eclipse开始执行Eclipse整合开发环境。第一次启动Eclipse时会弹出视窗让你决定预设的工作目录。一般使用Eclipse预设的工作目录即可。进入到EclipseIDE后,安装Android开发工具扩充套件。3.Eclipse安装ADT扩充套件下载完最新的ADT扩充套件后,打开Eclipse开发环境。选择Help->SoftwareUpdates选项,这选项会带出一个新视窗。选择AvailableSoftware标签,选择右方的AddSite...(新增网站)按钮,会弹出一个输入框。选择右上角的Local...按钮,并选取刚下载的Android最新开发工具档案,选到之后按下“OK”按钮离开。在视窗中全选新出现项目的所有选项后,按下右方的Install按钮。4.下载AndroidSDK接着我们要从/p/Androidbmi/wiki/下载Android软体开发套件(SoftwareDevelopmentKit,SDK)。下载下来的SDK档案需要先解压缩。Windows平台需要先另行安装解压缩程式,如免费的7-zip解压缩工具。将解压缩后的AndroidSDK档案夹命名为Android_sdk。在Eclipse打开偏好设定页面Preference,选择Android标签,在SDKLocation栏位按下“Browse...”键,选择刚刚解压缩完的Android_sdk档案夹所在地,然后按下视窗右下角的套用Apply按钮。这样AndroidSDK就设定完毕。4.3单项功能的实现4.3.1消除图片动画实现:当图片消除时会有动画的效果,其实现方式主要运用Java里的animation方法。4.3.2剩余时间效果实现时间会每一秒自动减一,其实现方式并不是简单的对控件赋值,因为直接操作控件会使界面出现卡主现象,所以程序开启一个线程,每秒都更新一次控件的值。4.3.3进度条效果实现主要用控件实现,时间递减的线程定时更新进度条的值。4.3.4游戏初始化进入游戏界面,首先需要显示出来图片矩阵,如果是第一关,就把地图设置成6行6列,如果是第二关和第二关以上,就把地图设置成8*8的格式,其代码如下: //列数countX,行数countY包括了边界(故实际棋盘大小为8*8) privatestaticfinalintcountX=10; privatestaticfinalintcountY=10; //图片大小设置 privatestaticfinalinticonSize=LlkGame.getScreenWidth()/(countX-1); privatestaticfinalinticonSizeH=LlkGame.getScreenHeight()/(countY+1); //引进程序的Activity privateLlkGameapp; //自定义的视图,用来呈现游戏界面 privateGameViewgameView; //用来保存程序布局的数组,之前在GameView中的map只是对这个数组的一个引用,控制器中将为之分配空间,生成初始化布局。 privateint[][]map; //保存连线的起始点和折点 privateList<Point>path=newArrayList<Point>(); privatebooleanm_bAddTime=false; //刷新界面包含两部分:1.实现连线消除动画,对GameView进行延时刷新;2.更新游戏剩余时间进行页面刷新 //2中需要用到一个Timer,而Timer会引起另起一个线程,而刷新界面需要在UI线程中执行,所以程序需要用到Handler方法来刷新 //1,2我们通过对一个定义好的Handler发送不同的消息进行不同的刷新操作 privateRefreshHandlerredrawHandler=newRefreshHandler();classRefreshHandlerextendsHandler{ publicstaticfinalintUPDATE_TXT=0; publicstaticfinalintUPDATE_IMAGE=1; //这个方法并不需要调用,是Handler内接口的实现。是一个消息接收器,所以不能随意命名 @Override publicvoidhandleMessage(Messagemsg){ switch(msg.what){ //更新文本框 caseUPDATE_TXT: TextViewt=(TextView)app.findViewById(R.id.timing); if(t!=null) { t.setText("剩余时间:"+remainTime+"秒帮助:"+help+"次"+"第"+level+"关"); gameView.drawProgress(remainTime,totalTime); if(remainTime<=0){ timer.cancel(); app.setState(LlkGame.STATE_LOSE); } } setOnclickListen(); break; //更新视图 caseUPDATE_IMAGE: gameView.invalidate(); if(win()){ help+=2; level++; GameView.level=level; timer.cancel(); app.setState(LlkGame.STATE_WIN); }elseif(die()){ shuffle(); } break; } } //延时刷新视图 publicvoidsleep(longdelayMillis){ this.removeMessages(0); Messagemsg=newMessage(); msg.what=UPDATE_IMAGE; sendMessageDelayed(msg,delayMillis); } };4.3.5判断消除图片消除图片时要判断是否可达,即优化判断是否可以消除的算法是本程序的灵魂,连连看游戏分为三种消去方式,分别为“0折型”,“一折型”,“两折型”,由图4-5可以看出,如果两点间只需要一条直线能够连接起来,则A、B两点的横坐标或纵坐标必定相同,有了这个条件,我们判断A、B两点是否只需要一条直接连接就简单了许多。其分析如下:1.“0折型”:水平消去或者垂直消去,如果两个点击的两个图片相同,并且它们在同一水平或垂直方向上,即返回H_LINE的画线类型,代码如下:privatebooleanhorizon(Pointa,Pointb){ if(a.equals(b))//如果点击的是同一个地方,直接返回false returnfalse; intx_start=a.y<=b.y?a.y:b.y; intx_end=a.y<=b.y?b.y:a.y; for(intx=x_start+1;x<x_end;x++) //只要一个不是-1,直接返回false if(map[a.x][x]!=-1){ returnfalse; } }(2)效果图如图4-17所示:2.“一折型”,当点击的两个点相同,它们不在同一水平或垂直方向上,并且它们要用两条直线相连,就返回ONE_C_LINE,代码如: //两张图片能够直连,则 if(linkD(p1,p2)){ path.add(p1); path.add(p2); m_bAddTime=true; returntrue; } //一个折点,考虑到两种可能的情况,path中应该有三个点。画直线的时候是两两之间进行的 Pointp=newPoint(p1.x,p2.y); if(map[p.x][p.y]==0){ if(linkD(p1,p)&&linkD(p,p2)){ path.add(p1); path.add(p); path.add(p2); m_bAddTime=true; returntrue; } } p=newPoint(p2.x,p1.y); if(map[p.x][p.y]==0){ if(linkD(p1,p)&&linkD(p,p2)){ path.add(p1); path.add(p); path.add(p2); m_bAddTime=true; returntrue; } }3.(1)“两折型”,当点击的两个点相同,它们不在同一水平或垂直方向上,并且它们要用三条直线相连,就返回TWO_C_LINE,代码如下: expandH(p1,p1E); expandH(p2,p2E); //判断是否可连接 for(Pointpt1:p1E){ for(Pointpt2:p2E){ if(pt1.x==pt2.x){ if(linkD(pt1,pt2)){ path.add(p1); path.add(pt1); path.add(pt2); path.add(p2); m_bAddTime=true; returntrue; } } } } //纵向搜索 expandV(p1,p1E); expandV(p2,p2E); //判断是否可连接 for(Pointpt1:p1E){ for(Pointpt2:p2E){ if(pt1.y==pt2.y){ if(linkD(pt1,pt2)){ path.add(p1); path.add(pt1); path.add(pt2); path.add(p2); m_bAddTime=true; returntrue; } } } }4.3.6在两图片之间连线当判断两个图片之间有路径可以相连,并且两图片之间可以用不超过三条直线的线把它们连接起来,即返回三种连接类型即V_LINE,ONE_C_LINE,TWO_C_LINE,代码如下://判断两个棋子能否直接相连 privatebooleanlinkD(Pointp1,Pointp2){ if(p1.x==p2.x){ inty1=Math.min(p1.y,p2.y); inty2=Math.max(p1.y,p2.y); booleanflag=true; //以下for和if是两个图片在纵坐标上中间部分全部没有棋子,则返回true。只要中间位置有一个不为空,则说明不能直连。故返回false for(inty=y1+1;y<y2;y++){ if(map[p1.x][y]!=0){ flag=false; break; } } if(flag){ returntrue; } } if(p1.y==p2.y){ intx1=Math.min(p1.x,p2.x); intx2=Math.max(p1.x,p2.x); booleanflag=true; for(intx=x1+1;x<x2;x++){ if(map[x][p1.y]!=0){//点p1和p2横坐标中间相隔的位置只要有一个不为空,则不能直连 flag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 9我的战友邱少云课件(共21张)
- 2025年度屋顶绿化植物种植与养护合同3篇
- 2025年度出租车司机职业健康保险及补充医疗保险合同3篇
- 2025年度企业市场营销策划合同范本2篇
- 2024露天宴会厅租赁及餐饮服务合同3篇
- 2024绿植租摆合同-企业员工福利项目协议3篇
- 2024跨境电商平台运营代理协议
- 【单元AB卷 能力提升卷】人教新起点英语二年级上册单元能力提升卷-Unit 2 Boys and Girls(含答案)
- 2024陶瓷工艺创新研发项目合作协议3篇
- 2025年度LED芯片研发与采购合作协议3篇
- 北师大版七年级数学寒假班讲义(基础班)
- 2025年驾照C1证考试科目一必考题库770题及答案
- 证券公司合规管理有效性评估参考表
- 消防维保流程
- 2024-2025学年北师版八年级物理上册期末考试综合测试卷
- 北京保险中介行业营销员增员及流动自律公约
- 100以内加减法混合[列竖式运算练习]
- 深圳市建设工程施工围挡图集(试行版_下半部分).pdf
- 全国城市雕塑行业设计收费标准
- 质量管理组织机构及职责
- 园区保安队长的工作职责
评论
0/150
提交评论