ImageVerifierCode 换一换
格式:DOC , 页数:38 ,大小:3.66MB ,
资源ID:2654284      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2654284.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(android连连看.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

android连连看.doc

1、摘 要 现今社会,由于人们生活压力较大,出现了各种缓解压力的方法,其中手机游戏是最为普遍的一种。手机游戏的制作的目的就是满足人们休闲的需要。在紧张的工作之余,休闲类的小游戏能够给人很大程度的放松。“连连看”是一款非常流行的休闲类游戏,由于它规则简单、画面精美、操作方便,赢得了很多玩家的喜爱。 本次毕业设计的目的就是在Android平台上实现简单的游戏开发,了解和掌握Android操作系统。Android平台基于java语言,在eclipse上的实现和测试。 本文通过在Android平台上小游戏——“连连看”的开发实现了一般“连连看”游戏的基本功能,还附加提示、重新排列、重玩游戏、背

2、景音乐的开关、音效的开关、关卡的选择等功能。 关键词:游戏;Android;java;eclipse;连连看 ABSTRACT In modern society, due to the pressure of people's lives, a variety of relaxation techniques have rapidly emerged, in which the mobile game is the most common. The original purpose of the mobile phone game is to meet the needs

3、of the people to relax .In a tight spare time, casual games can give a large degree of laxation .Lianliankan is a very popular casual game, and won a lot of players' love because of its simple rules, beautiful screen and easy operation. The purpose of this graduation project is a simple game on th

4、e Android platform development to understand and master the Android operating system .The Android platform is based on the java language, implementing and testing in eclipse. In this paper, a small game --Lianliankan development on the Android platform implements the basic functions of the general

5、Lianliankan game. This game is also attached to the function of tips, rearrangement, replay, background music switch, audio switch and level selection. Key words:Game; Android; java; eclipse; Lianliankan 目 录 绪论 1 1 开发概述 1 1.1 Android背景 1 1.2 课题来源 2 1.3 主要工作 3 2 Android

6、开发环境 3 2.1 Android开发环境 3 2.2 Android开发环境搭建 3 2.2.1 JDK的配置 3 2.2.2 安装Eclipse 4 2.2.3 安装Eclipse插件(ADT) 4 2.2.4 安装SDK 5 2.2.5 Android开发环境配置最终步骤 5 3 Android项目的目录结构 5 3.1 Resource目录及其下文件详解 5 3.1.1【res/drawable】 6 3.1.2【res/values】 6 3.1.3【res/layout】 6 3.2 gen/目录下的R.java文件详解 6 3.3 AndroidMa

7、nifest.xml介绍 7 3.4 其他文件、文件夹功能 7 4 连连看游戏程序设计过程 7 4.1 需求分析 8 4.2 游戏设计 8 4.2.1 游戏功能架构 8 4.2.2 类结构设计 10 4.3 详细设计 11 4.3.1 欢迎界面设计 11 4.3.2 游戏设置界面设计 11 4.3.3 游戏运行时界面设计 11 4.3.4 布局算法 12 4.3.5 连接算法 13 4.3.6 移动算法 18 5 游戏效果 22 6 结论 30 致 谢 31 参考文献 32 36 石家庄经济学院本科生毕业论文 基于安卓系统的连连看游戏的设计与实

8、现 绪论 现今社会已步入信息社会,信息社会离不开通讯,而手机则是人们必不可少的通讯工具。随着手机的普及以及手机的硬件的提升,手机的系统平台也日渐火热。目前国内最常见的移动开发平台有Symbian、iPhone、Windows Phone以及当下正在逐步兴起的Android。随着Symbian J2me等平台的没落,Android跟iPhone是最新的手机应用平台。 如今国内已经有越来越多的Android系统用户。进入2010年之后,Android的应用开发达到了一个爆炸式增长的状态,从2009年的不到1万款应用程序增加到现在的9万,而且即将突破10万,这也从开发者这一方面展现了用户不

9、断增多的现象。截止2010年第二季度,Android系统的国内市场占有率已经过10%,在西欧以及北美智能手机市场占有率也在20%左右。到2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。可见Android系统正在迅速崛起之中。但是对于Android系统的应用和开发在国内仍然属于起步和探索阶段,急需要大量的相关技术和人员的投入。 根据iResearch艾瑞市场咨询整理的国外数据显示,全球手机游戏市场的收入规模在2005年达到了102亿美元,2008年达到5

10、20亿美元。07年之后,手机游戏市场增速开始减缓,传统手机游戏逐渐显现颓势,市场增长主要由基于智能手机平台的游戏所带动。Android游戏进入智能手机游戏市场,必将打破原有格局,开辟手机游戏新纪元。 Android平台上的游戏相比应用软件,不需要进行严格的市场细分,不需要针对目标用户量身定制,而且绝大多数种类的游戏都具备传染性与普适性。 手机游戏作为android系统平台的一个重要组成部分,正在被越来越多的人所重视。全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。在除美国之外的各个发达国家,手机用户都比计算机用户多。中国更是一个手机用户大国。手机游戏潜在的市场比其他任何

11、平台都要大。 1 开发概述 本章主要介绍Android开发背景,本次设计的选题来源,以及设计的主要工作。 1.1 Android背景 Android是Google历经数年和投资数亿美元开发出来的智能手机系统,随着各大移动终端生产商大力开发和生产基于Android的移动智能设备,Android迅速得到商业和社会的认可。它是一个较新的系统和技术,作为一个庞大的系统,包括了Linux操作系统、各种本地程序、虚拟机和运行环境、java框架和java应用程序多方面的内容。 2010年末数据显示,仅正式推出两年的Android的操作系统已经超越称霸十年的诺基亚Symbian系统,成为全球最受欢迎

12、的智能手机平台。 Android的代表机型: l Android 1.0 2008年9月 l Android 1.5 Cupcake 纸杯蛋糕 2009年4月 l Android 1.6 Donut 甜甜圈 2009年9月 l Android 2.0&2.1 Éclair 松饼 2009年10月 l Android 2.2 Froyo 冻酸奶 2010年5月 l Android 2.3 GingerBread 姜饼 2010年12月 l Android 3.0 Honeycomb 蜂巢 2011年2月 l Android 4.0 Ice Cream Sandwich 冰淇淋三

13、明治 2012年3月 Android智能系统从2009年正式发布至今将近3年时间,支持Android的厂商也发展到几乎所有厂商,搭载各版本安卓系统的手机、平板电脑层出不穷,而Google前不久也收购了手机制造商摩托罗拉移动,可以想象在未来Android操作系统将有更大的应用,获得更多的支持。 1.2 课题来源 如今,用手机看新闻、发邮件、拍照、聊天已不再新鲜,用手机玩游戏已经成为时下较流行的消遣方式。近几年,随着手机游戏自身的日益成熟,手机游戏的巨大商机开始展现在人们面前。现在,传统游戏产业的商家已经开始从家用机游戏、PC机游戏等传统的游戏领域逐渐向手机游戏领域扩张。这一切证明手机游戏市

14、场已经成为目前移动领域最具有活力的市场。 连连看游戏的规则简单、容易上手,游戏速度节奏快,画面清晰可爱,适合以女性为主体的细心的玩家。连连看游戏的发展经历了三个过程:桌面游戏、在线游戏、社交游戏。 连连看游戏是源自台湾的桌面小游戏。流入大陆后,风靡一时,同时也吸引众多程序员开发出多种版本的“连连看”。其中,“阿凡达连连看”是顾方编写的制作,以其精良受到广大好评,这也成为顾方“阿达系列软件”的核心产品。其产品于2004年,取得了国家版权局的计算机软件著作权登记证书。 随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看

15、以华丽界面吸引了一大批的女性玩家。   2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。 随着iPhone、Android等大屏幕触屏智能手机的推出,使得在手机上玩“连连看”有更好的体验。将连连看游戏放到手机上,可以随时随地拿来玩,用来消磨一些无聊的时间。 1.3 主要工作 这次游戏主要是采用Android的View框架编写,部分控件运用Android中其他组件。运用算法来实现游戏规则,图片布局。 UI(用户界

16、面)方面:设置三个界面,一个是游戏欢迎界面;一个是游戏设置界面;一个是运行游戏时的界面。分别在相应的界面实现相应的功能。其中运行游戏时的界面最为重要,也是这次设计的核心部分。 2 Android开发环境 本章主要介绍如何搭建Android开发环境,包括安装JDK、安装Eclipse、Eclipse插件和安装Android SDK等。 2.1 Android开发环境 官方建议使用Eclipse进行开发。Eclipse是一个开放源代码的、基于java的可扩展的集成开发环境(IDE)。Eclipse可以集成多种插件,以完成特定语言的开发。 本论文使用的Eclipse版本为3.7,因为开发是

17、基于java的,所以用的JDK,版本为6.0。可以到sun官方下载。 如果不用eclipse,也可以直接使用ant,MyEclipse来构建。新手都不会用ant,一般都用eclipse。而MyEclipse是收费的,并且插件较多,影响运行速度,因此不建议使用。 2.2 Android开发环境搭建 2.2.1 JDK的配置 首先到官方网站下载jdk,需要注意的是是下载jdk而不是jre,因为jre是java的运行环境,jdk不仅包含了jre还包含了我们开发java程序所用的工具集合。 安装下载后的软件。根据提示,一步一步的将其安装在目录下,例如E:\ android\android\j

18、ava\jdk1.6.0_26。 测试JDK是否安装成功,在windows中单击【开始】->【运行】,在对话框中输入“cmd”,点击【确定】,之后输入“java –version”回车,出现如下图信息,则安装成功。 图2-1 JDK安装成功 2.2.2 安装Eclipse 在安装完JDK后,开始安装开发工具Eclipse,直接将下载好的文件解压到相应的目录下,打开文件夹,双击“eclipse.exe”即可运行。 初次启动eclipse,会遇到如下提示界面,提示选择自己的工作空间路径,可以点击【Browse…】选择自己的工作空间存放路径。如果不希望下次打开eclipse时有该提示,

19、可以点击“Use this as the default and do not ask again”前面的单选框。之后点击【OK】。 图2-2工作空间提示界面 2.2.3 安装Eclipse插件(ADT) 打开Eclipse,点击【help】->【Install New Software】,在出现的对话框里点击【Add】,在name一栏输入“ADT”,然后点击【Archive…】,浏览和选择已下载的插件压缩文件“ADT-0.9.5.zip”的路径。点击【OK】。然后选择Developer Tools,一直点击【Next】,直到出现一个如图2-3的界面,选中“I accept the

20、terms of the licence agreements”,之后点击【finish】。等待安装结束。中间会出现警告,点击【OK】继续,点击【Yes】重启Eclipse,至此,插件安装完成。 图2-3安装ADT选择界面 2.2.4 安装SDK 解压SDK压缩包到电脑的合适位置,运行解压后的“SDK Setup.exe”文件,在出现的界面上选中“Accept”,之后点击【Install】,开始进入下载页面。下载时间较长。下载好后,启动Eclipse,选择【window】->【preferences】,在打开的视图左边点击【Android】,在右边的SDK Location中选择An

21、droid SDK所在的位置。若右下方的区域中出现SDK列表信息,说明SDK路径指定成功。点击【OK】完成安装。 2.2.5 Android开发环境配置最终步骤 在安装完JDK、Eclipse、Eclipse插件及Android SDK之后,Android开发环境基本搭建完成,但由于运行example的时候总出现“Failed to find an AVD compatible with target”,所以必须在运行实例前就创建好avd。可以直接在cmd中输入 android list,会列出可以创建avd的几个api,如id1、id2、id3 分别对应sdk1.1、sdk1.5、Goo

22、gleAPIs。 然后运行android create--name myname(英文名) --target 3(如果要用sdk1.5就输入2,1.1就用1) 创建好后就完成了环境配置的终极步骤。 3 Android项目的目录结构 本章主要介绍Android项目中的各个目录作用。 3.1 Resource目录及其下文件详解 res是resource的缩写,该目录为资源目录,存放应用程序的图片、音频、布局等资源。res/目录下可以有一下几个子目录。 3.1.1 【res/drawable】 res/目录下有三个drawable文件夹——【drawable-*dpi】,区别只

23、是将图标按分辨率高低来放入不同的目录。【drawable-hdpi】用来存放高分辨率的图标,【drawable-mdpi】用来存放中等分辨率的图标,【drawable-ldpi】用来存放低分辨率的图标。程序运行时可以根据手机分辨率的高低选取相应目录下的图标。如果不想准备过多图片,也可以只准备一张图片将其放入三个目录的其中一个中去。 3.1.2 【res/values】 文件夹下常放的文件如下: l strings.xml定义字符串和字符,在Activity使用getResource().getString()或getResource().getText()取得资源; l arrays.

24、xml 定义数组,在Activity中使用getResource().getStringArray()获取一个string数组; l colors.xml 常用来定义颜色和颜色字串数值,可以在Activity中使用getRsource().getDrawable以及getResource().getColor()取得资源。 l styles.xml 定义样式; l dimens.xml 用来定义尺寸数据,使用getResource().getDimension()取得这些资源。 一般创建一个项目时,该文件夹下只有strings.xml文件,要是程序中需要其他文件,在自己创建。 3.1

25、3 【res/layout】 一般创建一个新项目,ADT默认自动创建main.xml文件。与在网页中使用HTML文件一样,Android在XML文件中使用XML元素来设定屏幕布局。每个文件包含整个屏幕或部分屏幕,被编译进一个视图资源,可以被传递给Activity中的setContentView或被其他布局文件使用。被Android资源编译器编译。 res目录中还可以自己定义一些文件夹,如anim等,其内的文件实现一些工具特效的效果。 3.2 gen/目录下的R.java文件详解 R.java文件中默认有attr、drawable、layout、string等四个静态内部类,每个静态内

26、部类分别对应一种资源,如layout静态内部类对应layout中的界面文件,其中每个静态内部类的静态常量分别定义一条资源标识符,如“public static final int main=0x7f030000;”对应的是layout目录下的main.xml文件。当开发者在res/目录的任何一个子目录中添加或删除相应类型的文件后,ADT会在R.ava文件中相应的匿名内部类中自动生成或删除一条静态int类型的常量,并对添加的文件进行索引。 R.java文件除了有自动标识资源的“索引”功能之外,还有另一个主要功能,当res/目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对

27、应的资源编译到该应用的APK包中,这样可以节省Android手机资源。 3.3 AndroidManifest.xml介绍 每个应用程序都有一个功能清单文件AndroidManifest.xml(一定是这个名字)在它的根目录里。这个清单文件给Android系统提供了关于这个应用程序的基本信息,系统在运行任何程序代码之前必须知道这些信息。今后开发Activity、Service之后都要在AndroidManifest.xml中进行定义。AndroidManifest.xml主要包括以下功能: l 用Java包给应用程序命名。这个包名则是应用程序的唯一标识; l 描述应用程序的组件——组成

28、应用程序的Activity、Service、Broadcast Receiver以及Content Provider。它要用每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。这些声明会让Android系统了解应用程序中组件,以及这些组件被加载的条件; l 判断哪些进程是主应用程序组件; l 声明应用程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应用程序进行交互; l 为了跟应用程序组件进行交互,还声明了其他要求有的权限; l 列出了能够提供应用程序运行时的分析和其他信息的Instrumentation类。只有在开发和测试应用程序时才在

29、清单文件中声明这些类,在应用程序被发布之前,要删除这些类; l 声明应用程序所要求的最小的Android API级别; l 列出应用程序必须链接的外部库。 3.4 其他文件、文件夹功能 l src/ 专门存放我们编写的java源代码的包; l android 2.2/ 存放Android自身的jar包; l assets/ 该目录用来存放应用中用到的类似于视频文件、MP3等一些媒体文件; l default.properties 该文件一般也不需要手工去修改。该文件存放了项目对应的一些环境配置,如应用要求运行的最低Android版本。 4 连连看游戏程序设计过程 本章主要介绍

30、连连看游戏中用到的布局文件,可视化控件及它们的具体实现,连连看游戏的算法实现。 4.1 需求分析 这次设计要实现的是一个简单连连看游戏,选用Android平台,基于java语言在Eclipse上进行测试和检验。要求实现连连看游戏的基本功能。 本次设计的主要功能是通过在Android平台上小游戏连连看的开发实现一般“连连看”游戏基本功能的简单的游戏软件。 设计的主要功能如下: l 游戏规则 第一次使用鼠标点击图案,图案以放大的特殊方式显示,该图案成为选中状态。再次点击其他图案,如果该图案与被选中的图案相同且两图案连接起来,连接线不多于三根直线,就可以成功将两图案消除,否则第一个图案就

31、恢复为未被选中状态,第二个图案则变成选中状态。 l 游戏时间设置 每消去一对图案,时间就会增加。当时间全部消耗完时并且还有图案未被消除,则本关游戏失败,可以选择重玩或退出。在限制时间内消除全部图案,则赢得这一关,可选择重新再玩一次,还是玩下一关,亦是退出游戏。 l 不同关卡的设置 每到下一关,游戏时间都会比上一关少,而且消除图案时,图片会向左移或右移,或者向中间、向两边移动等来增加关数难度。 l 重新排列 使画面上的图案都重新布局。 l 暂停游戏 当点击菜单时,会出现两个菜单按钮,一个是重玩,一个是暂停,点击暂停时,会提示继续、重玩或退出游戏。 l 游戏提示 在玩家找不到可

32、消除的图案后,可选择提示,自动消除两个可以连接起来的图案来帮助玩家,但游戏时间不会增加。 l 游戏音乐设置 在游戏开始前设置,选择游戏背景音乐的开关,默认为关闭状态。 l 游戏音效设置 同音乐设置,选择游戏音效的开关,默认为关闭状态。 l 游戏关卡选择 最高可选择到第四关。 l 保存游戏设置 将音乐、音效、关卡所做的设置保存,以便游戏按照玩家的设置进行游戏。 l 关于游戏 在游戏界面中需要提供游戏使用说明等帮助提示,以方便对本游戏不了解的玩家对游戏进行操作和使用。 l 退出游戏 点击退出时,提示是否退出游戏,避免玩家因误点按钮而终止游戏。 4.2 游戏设计 4.2.

33、1 游戏功能架构 这次设计的功能架构及开始游戏基本框架如下: 图4-1游戏总体功能架构 图4-2开始游戏基本框架 游戏总体架构在设计实现上就是两个Activity界面:一个是点击游戏进入的欢迎界面,一个是游戏设置。 其中欢迎界面包含四个Button控件,当进入游戏开始界面时,调用一个相对布局welc的XML布局文件。其中包括4个Button按钮分别实现不同的功能。第一个Button是开始游戏,点击进入游戏开始。第二个Button是游戏设置,点击进入游戏设置界面,此文件中包括四个Button按钮,分别是音乐设置、音效设置、关卡选择、保存设置,来实现音乐、音效的开关,从哪一关开始

34、游戏,将所做的设置保存。第三个Button是游戏规则,点击出现一个有关游戏规则的对话框。第四个Button是退出游戏,点击出现提示是否推出的对话框。 开始游戏程序主要包含两大模块:即(1)表示层模块;(2)后台逻辑模块。 其中表示层模块即为游戏的UI及一些游戏辅助效果,表示层模块中,重要的是实现游戏的布局地图。项目的实现中,游戏的布局将使用自定义View的方式,在屏幕上贴图实现。而菜单模块及一些选择dialog,只是为用户提供一些常见的选择,如重玩,下一关,暂停等等。为了有一个更好的用户交互环境,dialog的实现将通过自定义dialog的方式。而游戏音效是MediaPlayer在不同的状

35、态场景下播放不同的游戏音效。 在后台逻辑模块中,即对于程序计算的实现与程序各种状态的监听,将是整个程序运行的基础。此模块中将实现对于游戏剩余时间限制和游戏状态的监听与处理。对于游戏剩余时间的监听,将开启单独的线程进行处理,从而不至于影响主程序逻辑的运行;在对游戏状态的监控处理中,将会实现对于连通的两个图案的消除(即游戏界面的更新),游戏输赢的监听判断,游戏暂停与否等(暂停状态需要同时将剩余时间暂停,而时间监听线程需要知道所处状态,此二者紧密联系)。对于本程序中最重要的还是程序中核心算法模块的实现,在游戏中,最主要的算法是判断两个选中的图案是否能够连通,其中帮助算法和无解检测算法也依赖于此算法

36、而进行。图片移动算法则是为了增加游戏的难度、灵活性,此部分算法主要在于消除两图案后,图片集体向哪个方向移动。 4.2.2 类结构设计 游戏由十多个类组成,其功能如下: l BoardView类 在android平台下,采用继承自View类的方式。在此类中实现屏幕上贴图、绘制连通的路劲、消除连通图案、图片移动的算法等。 l GameView类 在android平台下,采用继承BoardView类的方式。主要实现监听剩余时间的内部类实现、游戏开始、判断两个选中图案是否能连通的核心算法、帮助算法、无解检测算法等。 l WelActivity类 在android平台下,采用继承Acti

37、vity类的方式。实现游戏运行时的界面效果及菜单模块及选择dialog等。 l WelcomeActivity类 继承Activity类,实现欢迎游戏界面。 l SetActivity类 继承Activity类,实现游戏设置界面。 l MyDialog类 在android平台下,采用继承Dialog类的方式。实现了OnClickListener的OnClick方法,使用一个布局文件,将自定义的dialog布局,完成包含退出游戏、重玩这一关及下一关的三个图片按钮的对话框。 l FailDialog类 同MyDialog类,继承Activity类,将自定义的dialog布局,实现包

38、含退出游戏和重玩的对话框。 l SoundPlay类 实现对音效的设置。 l Dataset类 实现音乐开关、关数等一些变量的设置。 l Configuration类 实现读取文件的功能。 l OnTimerListener类、OnToolsChangeListener类、OnStateListener类 定义的接口类,分别实现游戏状态变换的监听、剩余时间的监听、重排和提示两种工具都有次数的限制。 4.3 详细设计 4.3.1 欢迎界面设计 欢迎界面包含四个Button按钮,分别实现进入游戏运行界面、进入游戏设置界面、出现关于游戏规则的对话框、出现是否退出游戏的提示框。

39、 本部分功能在WelcomeActivity类中实现,用setContentView()函数调用了welc.xml布局文件。其中实现开始游戏按钮双击的为startBtn.setOnClickListenter()函数,实现游戏设置双击效果的为setBtn.setOnClickListenter(),关于游戏按钮的实现为aboutBtn.setOnClickListenter(),退出游戏的为exit. setOnClickListenter()。类中setOnFocusChangelistenter()作用是点击相应按钮后,按钮颜色的变化效果。 4.3.2 游戏设置界面设计 此界面同样包含

40、四个按钮,分别出现音乐设置的选择对话框、音效设置的选择对话框、关卡选择的选择对话框、保存游戏后返回欢迎界面。 这部分功能在SetActivity类中实现,调用了set.xml布局文件。其中音乐设置、音效设置、关卡选择三个按钮上用setOnClickListenter()函数中调用AlterDialog类,完成选择对话框的功能,保存设置按钮在setOnClickListenter()中将Dataset类中的变量赋与前三个按钮设置的变量的值。 4.3.3 游戏运行时界面设计 这部分功能在WelActivity类中实现,调用welcome.xml布局文件、MyDialog类和GameView类

41、 其中WelActivity类中onCreat()函数完成程序运行界面显示,即连连看布局。onClick()函数实现点击刷新、提示按钮时,图片出现抖动的效果,同时分别调用refreshChange()重新排列函数和autoClear()提示函数完成刷新界面和提示功能。toast()用于游戏开始时显示这一关游戏的总时间及关数。实现菜单功能的函数为nCreateOptionsMenu()和onOptionsItemSelected()。还有用于监听后退按钮的函数onKeyDown(),胜利或失败时提示对话框函数handMessage()等。 在MyDialog类中,实现游戏胜利或失败时的提示

42、对话框按钮点击功能函数的onClick(),用于游戏开始时显示总时间及关数的toast()函数等。 GameView类中,游戏开始函数startPlay(),更新剩余时间线程RefreshTime,处理程序线程RefreshHandler(),还包含界面初始化函数initMap(),触屏重写函数onTouchEvent(),核心算法函数link(),是否有解的函数die(),重新排列change(),继承BoardView类中画线函数、图片移动函数等。 4.3.4 布局算法 首先在程序初始化时,先将要加载的图案在棋盘上按序绘制出来,每一种图案在绘制的时候需要一次性绘制两次,这样,才能保证

43、绘制出来的每种图案的个数都是偶数。这样绘制后,进行一次遍历,随机的调换棋盘中的图案(是现有棋盘中的图案之间的调换,并不是更改成为其他的图案)。经过调换的棋盘就完成了棋盘的初始化。其中棋盘在最外面一层中是不添加图案的,为的是连线时候能够在最外层画线,而不会出现穿过图案画线的情况。 初始化地图流程图: 图4-3初始化地图 初始化屏幕地图的主要代码: public void initMap() { int x = 1; int y = 0; //标志,确保每个图片出现的是偶数 for (int i = 1; i < xCount - 1; i++) {

44、 for (int j = 1; j < yCount - 1; j++) { map[i][j] = x; if (y == 1) { x++; y = 0; if (x == iconCounts) { x = 1; } } else { y = 1; } } } change(); //随机的打乱图案顺序 } 4.3.5 连接算法 两个图案能够连接的充分条件是:(1)两个图案是相同的;(2)两个图案之间有一条路相连,其中这条“路上”没有其

45、他的图案“阻碍”;(3)这一条路不能有两个以上的拐角。满足这三个条件即可认为两个图案是相连通的。对于图案连通的判断中,连通时有三种情况,分别为以下: (1)直线型:这就是两图案在同一行或同一列,这种情况最容易判断,只要两者之间没有其他图案即可,实例如下图,判断直线型相连。 图4-4直线型的实例 (2)一折型:其实是以两个选中图案确定的两个对角顶点画一个矩形,若是其余两个顶点中有能够满足与两个选中图案都能够“直线型”相连的,即可认为这两个选中图案可以相连,实例如下图(红色为需要判断的图案),判断两个红色的图案相连的情况。 图4-5一折型的实例 (3)二折型:对于二折型相连的

46、判断是重点。判断二折型连通主要是做两个方向的扫描,即横向扫描与纵向扫描。 横向扫描(红色为需要判断的图案):     图4-6进行横向扩展       图4-7扩展中两点能够满足直线型相连 横向扫描首先将两个需要判断的图案进行横向的扩展,扩展规则是在没有遇到其他图案时一直扩展,直到遇到此行的其他图案或者到达棋盘的边缘,扩展后的点如图中X表示。如果扩展后的点中能够存在两点满足直线型相连通的情况,即可判断两个图案是可以相连通的,连通的画线也是根据这两个辅助点相连而成的。 类似的,对于纵向扫描(红色为需要判断的图案):        

47、 图4-8进行纵向扩展            图4-9扩展中存在两点能够满足直线型 (4)连连看连接算法流程图及主要代码 连接算法: 图4-10连连看连接算法 连连看连接算法主要代码: private boolean link(Point p1, Point p2) { if (p1.equals(p2)) { return false; } path. clear (); if (map[p1.x][p1.y] == map[p2.x][p2.y]) { if (linkD(p1, p2)) { path.add (p

48、1); path. add (p2); return true; } // 一个拐点的判断 Point p = new Point(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); return true; } }

49、 p = new Point(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); return true; } } // 两个折点 expandX (p1, p1E); expandX (p2, p2E); for (Point pt1: p1E

50、) { for (Point pt2: p2E) { if (pt1.x == pt2.x) { if (linkD(pt1, pt2)) { path.add(p1); path.add(pt1); path.add (pt2); path.add (p2); return true; } } } } expandY (p1, p1E); expandY (p2, p2E); for (Point pt1: p

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服