已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于java环境下的连连看游戏研究毕业论文目录0 前言11 绪言:21.1 国内外研究现状21.2 发展趋势21.3 课题研究的内容及意义42 系统的需求与可行性分析52.1 系统需求分析52.1.1 功能需求:52.1.2性能需求52.2 可行性分析52.2.1 经济可行性52.2.2 操作可行性62.2.3 技术可行性62.3 开发环境的选择和介绍62.3.1 编程环境的选择63 系统总体设计133.1 设计思路134 系统详细设计154.1 程序系统结构154.1.1 系统功能模块设计154.2 系统流程图174.2.1 主流程图174.2.2 系统的具体功能实现的184.3 系统具体功能的设计204.3.1 游戏的菜单界面设计204.3.2 连连看游戏的游戏界面设计214.3.3 连连看游戏的布局算法234.3.4 连连看游戏的连通算法235 编码285.1 概述开发工具及编程脚本285.1.1 概述开发工具285.1.2 编程脚本285.2 脚本习惯说明285.3 脚本295.3.1连连看游戏的布局算法295.3.2 连连看游戏的连通算法306 系统的测试与运行346.1 游戏的测试346.1.1测试原则及测试方式概述346.1.2系统测试的用例及结果356.2 游戏的主要界面的运行结果与分析386.3软件测试结论447 结论45致谢46参考文献47附录A48附录B53附录C580 前言游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。 随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。此次研究希望能开发一个简单的单机版“连连看”小游戏。1 绪言:1.1 国内外研究现状游戏“连连看”是源有台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿凡达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。 随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。艾瑞咨询通过对07至08年连连看小游戏行业市场热点,结合新浪.搜狐.雅虎.网易调查发布的数据分析发现,2009年小游戏热点集中在连连看小游戏领域,从2007年起风投对小游戏行业的投资案例明显减少,小游戏行业的投资目标主要集中在从事连连看小游戏企业和研发企业,小游戏行业在经历了高峰期后正趋于平静。 2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。1.2 发展趋势小游戏连连看发展现状及未来趋势的研究认为,小游戏依然是一个能给小游戏市场创造巨大财富的行业,因此急需寻求一个新的亮点。艾瑞咨询分析认为,选择有很大发展空间、且投资金额要求不高的小游戏连连看成了投资者再次介入小游戏行业的首选,其优势主要体现在以下两个方面:第一:连连看小游戏产品定位合理 外部有利因素促进行业发展1.小游戏用户需求呈多样化趋势 连连看小游戏填补空白根据艾瑞最新发布的2007-2008年中国小游戏行业研究报告的数据显示,据艾瑞咨询用户调研数据显示,有31.2%和用户喜欢益智类游戏,有25.8%的用户喜欢策略类游戏,使用这两类游戏作为核心的 连连看小游戏最受欢迎,而连连看小游戏则是因为其特殊的呈现方式,从而争取到热衷于益智、策略游戏的玩家。2.连连看小游戏用户属性的多元化 奠定良好媒体价值基础根据艾瑞咨询最新推出的2007-2008年中国连连看小游戏戏行业发展报告的数据显示,在全体连连看小游戏用户的样本中,大专及以上学历者占总数的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.3 课题研究的内容及意义“连连看”游戏的技术难点在于被选中的两个对象间的路径查找。以往的路径查找算法思想是通过不断的扫描,即,根据被选中的两个对象所对应位置的纵、横坐标,扫描其上面的每一行(列),直到找到以两个被选中的对象所对应的纵(横)坐标为始末的一条可行路径,然后再以此为基准查找每个被选中的对象所对应的列(行),看是否行得通,如果行得通则可以继续,如果行不通则需要回退到上一步,继续按以上思路重新进行查找,直到找到为止。由于这样查找,每次需要考虑的因素比较多,而且盲目,由于每次要从第一行或第一列开始进行查找,对一些靠得比较近的对象,比较浪费时间与空间。从其基本查找思想来说,就已经把整个问题复杂化了,结果会使问题越弄越复杂,同时,这样编出来的程序代码很大,游戏的效率受到很大影响。 算法存在的问题,设计了一种算法,并将它应用于“连连看”游戏的路径查找,避免了前面算法的盲目性,充分提高了游戏的速度。2 系统的需求与可行性分析2.1 系统需求分析需求分析就是分析用户的需求,并了解用户需要什么?想实现什么?需求分析有两个目的:(1)告诉用户我已经了解你的需求,让用户相信我们能开发好该系统,最好能能说服用户:我们开发的系统在甚至比他们想象的还要好。让他们相信的一个主要手段就是分析用户的需求,并把分析的结果告诉用户。该文档的重点最好侧重功能,操作以及操作规则描述,如果需要,还可以包含安全需求,性能需求,运行环境需求等。(2)需求分析的另外一个目的就是为下阶段的分析设计提供抽象的数据与功能模型。2.1.1 功能需求:通过JAVA编一个连连看程序,通过鼠标点击使相同两个图像消掉。程序实现以下几个功能:1、判断鼠标点击的两张图片是否相同;2、判断2张图片是否可以相连;3、判断时间,倒计时;4、判断是否使用炸弹,炸弹剩余数目,自动生成路径消除两张相同图片;5、判断剩余图片,是否胜利;6、当出现无可连通状态时,可重新排列剩余图片位置。2.1.2性能需求界面设计友好,美观。提供灵活、方便的操作功能具有易维护性和易操作性2.2 可行性分析2.2.1 经济可行性本系统作为一个毕业设计任务开发,并在两个月的时间内完成所有的开发工作,在开发过程中主要用到的软硬件资源有:计算机一台,JDK。其中JDK为网上下载安装,不需要为此有很大开销。系统最终单机运行既可,也不需要任何额外的花销。总的来说,系统开发过程以及开发完成之后的运行都不需要多大开销,从经济角度来说,开发此系统是完全可行的。2.2.2 操作可行性“练练看”小游戏是一款很大众的小游戏,因此该游戏的使用者只要有基本的使用计算机的经验,就可对该游戏进行操作,该游戏不存在操作可行性方面的问题。2.2.3 技术可行性图形用户界面(graphic user interface)简称GUI,使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便的向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户。图形用户界面操作简单,省去了字符界面用户必须记忆各种命令的麻烦,已经成为目前几乎所有应用软件的集成标准。Java语言中,为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件。所以运用java完全可以完成连连看小游戏的编写,也不存在技术可行性方面的问题。2.3 开发环境的选择和介绍2.3.1 编程环境的选择Java是一种简单的、面向对象的、分布式的、解释执行的、健壮的、安全的、结构中立的、可移植的、高效率的、多线程的和动态的语言。它具有以下特点:1.简单Java是一种简单的语言。Java是在C、C+的基础上开发的,继承了C和C+的许多特性,但同时也取消其他许多编程语言中繁琐的、难以理解的、不安全的内容,如指针、多重继承等。JDK还提供了丰富的基础类库,具有C或C+编程经验的程序员都会很熟悉,无需经过长时间训练即可掌握它。2.面向对象Java是一种纯面向对象的语言。Java程序的设计思路不同于C语言基于过程的程序设计思路,而是采用面向对象的思想。面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。 所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。 多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operatoroverload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。 继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。面向对象程序设计,具备更好的模拟现实世界环境的能力和可重用性,将待解决的现实问题概念化成一组分离的程序对象,这些对象彼此之间可以进行交互。一个对象包含了对应实体应有的信息和访问、改变这些信息的方法。通过这种设计方式,使所设计出来的程序更易于改进、扩展、维护和重用。Java语言提供类、接口和继承等原语。为了简单起见,Java只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口间的实现机制,关键字为implements。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。3.分布式分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。Java是一种分布式的语言。传统的基于C/S(客户端/服务器)架构的程序,均采用客户端向服务器提出服务请求,服务器再根据要求执行适当的程序并将结果返回,所以服务器负荷较重。Java采用Java虚拟机架构,可将许多工作直接交由终端处理,数据因此也可以分布式处理。此外,Java类库的运用,大大减轻了网络传输的负荷;Java类库包含了支持HTTP和FTP 等基于TCP/IP协议的子库,Java应用程序可凭借URL地址打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。网络环境是Java大显身手和进一步发展的地方。4.高效解释执行Java是高效解释执行的语言。高级语言程序必须转换为机器语言程序才能执行,但不同的计算机系统所使用的机器语言不同。Java为了实现“一次编译,随处运行”的目标,Java 的源程序在编译时,并不直接编译成特定的机器语言程序,而是编译成与系统无关的“字节码(Byte codes)”,由Java 虚拟机(Java Virtual Machine,JVM )来执行,JVM使得Java程序可以“一次编译,随处运行”。任何系统只有安装了Java虚拟机后,才可以执行Java 程序。JVM能直接在任何机器上执行,为字节码提供运行环境。当JVM解释执行Java程序时,Java 实时编译器(Just-In-Time,JIT)会将字节码译成目标平台对应的机器语言的指令代码。早先的许多尝试解决跨平台的方案对性能要求都很高。其他解释执行的语言系统,如BASIC、TCL、PERL 都有无法克服的性能缺陷。然而,Java 却可以在非常低档的CPU上顺畅运行,这是因为Java字节码是经过精心设计的,能够直接使用JIT编译技术将字节码转换成高性能的本机代码。事实上,Java的运行速度随着JIT编译器技术的发展已接近于C+。因而“高效且跨平台”对Java 来说已不再矛盾。5.健壮Java是健壮的语言。为了更好地理解Java的健壮性,先讨论一下在传统编程环境下程序设计失败的主要原因:内存管理错误和误操作引起的异常或运行时异常。在传统的编程环境下,内存管理是一项困难、乏味的工作。例如,在C或C+ 中,必须手工分配、释放所有的动态内存。如果忘记释放原来分配的内存,或是释放了其他程序正在使用的内存时,就会出错。在传统的编程环境下,异常情况可能经常由“被零除”、“Null指针操作”、“文件未找到”等原因引起,必须用既繁琐又难理解的一大堆指令来进行管理。对此,Java 通过自行管理内存分配和释放,从根本上消除了有关内存的问题。Java提供垃圾收集器,可自动收集闲置对象占用的内存。通过提供面向对象的异常处理机制来解决异常处理的问题。通过类型检查、Null指针检测、数组边界检测等方法,在开发早期发现程序错误。6.安全Java是安全的网络编程语言。Java常被用于网络环境中,为此,Java提供了一系列的安全机制以防恶意代码攻击,确保系统安全。Java的安全机制分为多级,包括Java 语言本身的安全性设计以及严格的编译检查、运行检查和网络接口级的安全检查。Java语言是强类型语言,而且每种类型都要求严格定义。首先,每个变量、表达式都有类型。其次,所有的数值传递,不管是直接的、还是通过方法调用经由参数传递,都要进行类型相容性检查。有些语言没有自动进行数据类型相容性检查或对冲突的类型进行转换的机制;Java编译器对所有的表达式和参数都要进行类型相容性的检查以确保类型是兼容的。任何类型的不匹配都是错误的,在编译完成之前,错误必须全部被纠正。此外,Java 摒弃指针类型和数据类型的隐式转换,从而对内存访问进行了严格的限制。在编译期间,Java 编译器并不分配内存,而是推迟到运行时由解释器决定,这样编程人员就无法通过指针来非法访问内存。在运行期间,Java的运行环境提供了四级安全保障机制:字节码校验器、类装载器、运行时内存布局和文件的访问限制。在网络接口级,用户可按自己的需要来设置网络访问权限。另外,Java的未来版本将采用公开密钥法以及其他加密技术,来核实从网络上传输过来的代码的源主机及该代码的完整性。7.中立Java是结构中立的语言。Java的设计目标是要支持网络应用程序。一般而言,网络是由许多不同的系统构成,包括各种CPU与操作系统结构。为了让Java应用程序能够在网络上任何地方执行,其编译器会产生一种具备结构中立性的对象文件格式即Java字节码文件。Java字节码可在任何安装了Java虚拟机的平台上运行。8.可移植Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C+具有一定程度的源代码级平台无关,表明用C或C+写的应用程序不用修改只需重新编译就可以在不同平台上运行。 Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。 另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。 Java的平台无关性具有深远意义。首先,它使得编程人员所梦寐以求的事情(开发一次软件在任意平台上运行)变成事实,这将大大加快和促进软件产品的开发。其次Java的平台无关性正好迎合了“网络计算机”思想。如果大量常用的应用软件(如字处理软件等)都用Java重新编写,并且放在某个Internet服务器上,那么具有NC的用户将不需要占用大量空间安装软件,他们只需要一个 Java解释器,每当需要使用某种应用软件时,下载该软件的字节代码即可,运行结果也可以发回服务器。由于Java是与平台无关的语言,就决定了Java开发的程序是可移植的。结构中立是确保程序可移植的必要条件,此外还需很多其他条件的配合。Java 在可移植性方面做了许多工作。Java语言规范中也没有任何“同具体实现相关”的内容,解决了所有可能会影响到Java可移植性方面的问题。如在Windows 3.1中整数(Integer)为16位,在Windows 95中整数为32位,在DEC Alpha中整数为64位,在Intel 486中为32位,不同的操作系统和CPU对数据类型及长度都作了不同的定义,给程序的可移植性带来了一定的难度。Java通过定义独立于平台的基本数据类型及其运算,使Java数据得以在任何硬件平台上保持一致。事实上,几乎目前使用的所有CPU都能支持以上数据类型,都支持864位整数格式的补码运算和单/双精度浮点运算。Java语言的基本数据类型及其表示方式如表1-1所示。表2-1 java基本数据类型表示方式表Tablet.2-1Basic data type representation table基本数据类型 表示方式 基本数据类型 表示方式 byte 8位二进制补码 float 32位IEEE754浮点数 Short 16位二进制补码 double 32位IEEE754浮点数int 32位二进制补码 char 16位unicode字符 long 64位二进制补码 9. 高效率Java是高效率的语言。每一次的版本更新,Java在性能上均做出了改进。在历经数个版本变更后,Java号称可以与C/C+拥有同样甚至更好的运行性能。如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令,来用JVM一秒钟内可调用 300 000个过程,与C/C+不相上下。10.多线程线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。多线程是一种应用程序设计方法。线程是一大进程里分出来的,小的、独立的进程,使得在一个程序里可同时执行多个小任务。多线程带来的好处是具有更好的交互性能和实时控制性能。但采用传统的程序设计语言(如:C/C+)实现多线程程序并非易事。C和C+采用单线程体系结构,而Java却提供了多线程支持。 Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。Java实现了多线程技术,提供了简便的实现多线程的方法,并拥有一组高复杂性的同步机制。11.动态Java 语言具有动态特性。Java 动态特性是其面向对象设计方法的扩展,允许程序动态地装入运行过程中所需的类,这是 C+ 进行面向对象程序设计所无法实现的。C+ 程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java采取如下措施来解决此类问题。(1)Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存后传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数据偏移量。存储器生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定。这样,对类中变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。(2)在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。(3)Java还简化了使用一个升级的或全新的协议的方法。如果系统运行 Java 程序时遇到了不知怎样处理的程序,没关系, Java 能自动下载你所需要的功能程序。Java是一种比C/C+更具动态特性的语言。在设计上强调为运行中的运算环境提供支持。Java是在运行时为模块与模块之间建立连接,并能够更直接地运用面向对象设计体系。程序库可以自由地增加新方法和实例变量,而不会对它们的客户产生任何影响。基于以上java的特点最终选择的开发语言为java。JAVA运行环境:JDK1.63 系统总体设计需求分析阶段已经完全弄清楚了目标系统的各种需求,较好的解决了要让所开发的软件“做什么”的问题,并已在软件需求规格说明和数据要求规格说明中详尽和充分地阐明了这些需求。下一步就要着手实现软件的需求,即要着手解决“怎么做”的问题。3.1 设计思路1. 用户可以通过点击菜单中的“开始游戏”选项。开始新游戏程序。程序会载入图片,并通过特定的算法排列图片,并标记图片,以便判断图片是否相同。记录图片坐标,以方便计算图片是否可以相连。确定图片的值,以确定用户点击的是哪张图片。2. 用户选择两张一样的图片,通过鼠标进行选取,如果用户两次点击的图片不相同,那么系统认为用户没有点,已完成用户以后的选取工作。如果用户选择的是相同的图片,那么系统会消除这两张图片,并使鼠标标记清0,同时消除这两张图片的标记,使里面的图片被标记在外面,以便用户可以进行以后的选择。3. 用户也可通过使用“炸弹”功能进行消除图片。方法是点击菜单中的“炸弹”选项使用,点击后如果界面上有两张可以相连的相同图片就随即消除两张可以相连的相同的图片。4. 炸弹数目是有限的,默认数目为三,没使用一次“炸弹”功能,炸弹数目就会自动减一,当炸弹数目为零时,并且用户想再次使用炸弹时,系统会弹出对话框提示用户。5. 当系统开始游戏后,系统会在后台记录时间,界面中显示时间倒计时,如果在用户还没有消除所有图片时,系统时间到了,那么系统会弹出对话框,提示用户,时间到了,游戏失败。6.界面中图片未完全消除,却无任何图片两个相同图片可消除情况,可点击重置,使剩余图片重新排列。7. 当用户点击确定后,系统会弹出对话框询问用户是否重新开始,用户选择“是”时,系统会开始新游戏;当用户选择“否”或“取消”时,系统会返回开始界面 8. 如果时间未到时,用户使所有的图片都消失(两两消除,直到最后一对),系统会提示用户游戏以通过,点“确定”后回到开始界面。9.如果游戏当中出现“死锁”状态,点击“重排列”,可将剩余图片的位置重新排列,继续游戏。10.游戏可以对难度进行设置,难度分为低、中、高三档,三种难度的时间限制不同。4 系统详细设计4.1 程序系统结构4.1.1 系统功能模块设计在设计连连看小游戏时,需要编写7个java源文件:MainFrame.java,ChessButton.java,MapUI.java,Setting.java,ArrayPoint.java,Map.java,DD.java1. MainFrame.java 主窗口部分定义了程序用函数,实现了程序菜单的使用。2. ChessButton.java 按键部分定义按键的位置,代表的值。3 .MapUI.java 初步定义游戏界面,按键部分判断点击的图片,判断两图片是否可连,是否相同。判断是否胜利,实现炸弹功能。4. ReMapUI.java重定义游戏界面,其他功能同MapUI.java5. Setting.java 数组确定了游戏各种参数属性。6. ArrayPoint.java 确定部分定义图片的值。7. Map.java算法部分通过算法确定两张图片是否连通8. DD.java定义倒计时显示 图4-1 功能模块图Fig.4-1 Function module chartMap.java源文件通过算法确定两张图片是否连通。JAVA版的连连看MapUI.java源文件初步定义游戏界面及功能。Setting.java源文件确定了游戏各种参数属性ArrayPoint.java源文件定义图片的值。DD.java源文件定义倒计时显示。MainFrame.java源文件定义主程序窗口和菜单。ChessButton.java源文件定义键值。initMenuBar()子函数initialize()子函数reload()子函数initTimer()子函数getpoint()子函数initialize()子函数initChesses()子函数bomb()子函数toString()子函数ReMapUI.java重定义游戏界面及功能。reset()子函数4.2 系统流程图4.2.1 主流程图两张图片是否相同两张图片是否可以相连程序是否还有图片未消除结束YYYNZHUNN进入主函数开始游戏接受用户点击点击图4-2 主流程图Fig .4-2Main Flow chart开始程序开始游戏接收用户点击是否使用炸弹是否二次点击两张图片是否相同两张图片是否可以相连消除用户点击的两张图片消除点击计数是否还有图片未消除结束消除两张一样的可以相连的图片消除点击计数YYYYYNNNNN图4-3 游戏进行流程图Fig.4-3 Game flow chart4.2.2 系统的具体功能实现的1.游戏进行流程图接受当前时间开始游戏时间是否为零提醒用户时间到结束NY图4-4 计算时间流程图Fig.4-4Computing time flowchart2.计时系统流程图3.炸弹流程图使用炸弹接收使用命令是否还有炸弹消除相同两张可相连图片提示用户无炸弹结束NY图4-5 使用炸弹流程图Fig.4-5 Use a bomb flow chart4.3 系统具体功能的设计4.3.1 游戏的菜单界面设计游戏菜单共分两栏:第一栏中又分五个菜单项:开始游戏;重玩一次;炸弹;重排列;退出第二菜单栏Difficulty难度共分三种难度:低;中;高。每种难度时间长短不同。图4-6 连连看游戏的菜单结构Fig.4-6 Link game menu struction连连看菜单界面FileDifficultStart gameOnce again BombResetExitEasyMiddleHigh实际游戏菜单如下:图4-7 连连看游戏菜单界面图Fig.4-7 Link game interface of the menu bar图4-8 连连看游戏“文件”菜单栏界面图Fig.4-8 Link game interface of the “file” menu bar图4-9 连连看游戏“难度”菜单栏界面图Fig.4-9 Link game interface of the “Difficulty” menu bar4.3.2 连连看游戏的游戏界面设计连连看游戏界面包括两部分,上半部分为,倒计时时间显示区,下半部分为游戏区域图4-10 连连看的游戏界面Fig.4-10 Link game interface游戏界面的功能主要包括时间控制,布局控制,连通控制,绘制屏幕图4-11 连连看游戏界面的结构组成Fig.4-11 Link game interface function连连看游戏界面倒计时显示游戏区域游戏难度炸弹次数布局算法连通算法绘制屏幕时间控制4.3.3 连连看游戏的布局算法游戏界面中共分割成100块,其中64块用于游戏显示,最外围一圈隐藏。算法中定义大小为64的一维数组,每四个分为一组,按从116的顺序存入数组中。调用nextInt(i),生成一随机数,数组任意位置的值交换,使数组中数字排列顺序打乱。将一位数组的值按一定规律存入二维数组中,二维数组对应游戏界面64块。即完成了游戏界面的布局。具体算法见5.3 脚本4.3.4 连连看游戏的连通算法连连看游戏中的联通规律是选择一对相同的图案进行连线,此连线在避开其他图案后,呈现的路径不超过两次转弯。对练练看的连通规则进行分析,发现路径搜索范围可以由整个游戏区域缩小到选中的两个图案所在的带状区域内,需要选择的带状区域又根据选中图案的相对位置,分为纵向带状区域,横向带状区域,双向带状区域三种情况,如下图所示.其中红色、绿色的方块表示不同的图案,黑色的直线表示连通路径,同心圈表示连通的结点横向带状区域纵向带状区域图4-12 连通算法带状区域分析图Fig.4-12 Zoster regional connectivity analysis of algorithms双向带状区域针对以上三种搜索区域,连通算法分成了三个函数来实现。其中两个函数分别进行横向带状区域、纵向带状区域的连通判断,第三个函数进行双向带状区域的连通判断,调用前面两个函数实现,这样进一步减小了代码量,并且提高了程序的可读性。如下图所示:连通算法纵向带状区域连通判断函数双向带状区域连通判断函数横向带状区域连通判断函数图4-13 连通算法函数调用图Fig.4-13 Call Graph fuction connectivity algorithm连通算法的横向带状区域连通判断函数定义与纵向带状区域连通判断函数定义见5.3脚本。连连看游戏的图案抽象成整形数存储在二维矩阵Mapij中,不同的整数表示不同的图案,整形数0表示该位置没有图案,用户选中的两个图案位置信息分别存储在变量priviousPoint和currPoint中,连通算法的流程图如下所示:图4-14 连通算法程序流程图Fig.4-14 Connectivitly agorithms program flowchartNYNYYNY连通算法选择第一个图案选择第二个图案是否同一种图案是否连通显示连通路径去掉选中图案爆炸效果结束横向带状区域连通判断函数双向带状区域连通判断函数纵向带状区域连通判断函数图案是否在一条直线上N是否横向带状区域 连通时转折点数量的不同,连通状态分为三种情况:直线连通:两个图案的坐标值(x,y)中,必有一个值是相等的,连通状态没有结点。有1个转折点的连通:两个图案的坐标值(x,y),必然都不相等,连通结点坐标(x,y),分别与两个图像块坐标值中的对应分量相等。有2个转折点的连通:连通的两个转折点坐标(x,y),必有一个值是相等的,且另一个值分别与两个图案坐标值中的一个值相等。如下图所示,其中红色、绿色的方块表示不同的图案,黑色的直线表示连通的路径,同心圆表示连通的转折点。直线连通一个转折点两个转折点图4-15 连通状态图Fig.4-15 Connected state diagram连通状态判断函数定义见5.3脚本。5 编码5.1 概述开发工具及编程脚本5.1.1 概述开发工具开发工具的选择本系统所用的开发工具是Eclipse。Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,每一个项目由一个项目管理委员会监督,并由它的项目章程管理。(1)开发平台Eclipse+JDK1.6(2)开发工具 文档创作采用Office系列软件5.1.2 编程脚本在选择开发语言问题上,我选择了java作为系统的开发语言,Eclipse开发工具强有力的开发能力给我的程序设计带来了很多方便,以前的课程设计的过程中,我积累了很多关于java编程的技巧,在这次毕业设计过程中,让我对java进行了更深入的研究,更加明确了java采用真正的面向对象的技术,它将所有的事件、控制、函数和程序都以对象为单位封装起来,具有“封装”“多态”“继承”的属性。而Eclipse为开发人员提供了各种工具和一个集成的开发环境,创造了应用开发时所需的各种部件,应用的各种成分,包括窗口、菜单、程序、数据库存取、数据库管理、图形、报表、调试、编译等工作全都能在Eclipse的集成开发环境中完成。Eclipse是面向对象的编程工具,相对于第四代面向过程编程语言,可让程序员将更多的精力放到功能的实现而不是界面的实现上来。这些不仅能提高程序员的工作效率,同时还能极大地加快开发进程。5.2 脚本习惯说明本系统代码中所有的类名和变量名遵循如下的原则(1)名字应该能够标识事物的特性。(2)名字尽量不使用缩写,除非它是众所周知的。(3)名字可以有两个或三个单词组成,但通常不应多于三个。(4)在名字中,所有单词第一个字母大写。(5) 使用名词或名词短语命名类。 (6)少用缩写。 (7) 不要使用下划线字符 (_)。 (8)不允许随意定义全局变量。(9) 一个变量只能有一个用途;变量的用途必须和变量的名称保持一致。(10)所有变量都必须在类和函数最前面定义,并分类排列。5.3 脚本5.3.1连连看游戏的布局算法private void init() int tempArr = new intSettings.ROWS * Settings.COLUMNS; int len = tempArr.length; for(int i = 0;i len/maxKinds;i+) tempArri * 4 = i + 1; tempArri * 4 + 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古赤峰市总工会所属事业单位竞争性比选工作人员招聘1人考试笔试参考题库附答案解析
- 施工方案优化与材料节约策略
- 2025云南省交通投资建设集团有限公司下属经营公司招聘13人笔试考试备考题库及答案解析
- 不锈钢管生产线项目社会稳定风险评估报告
- 2026中国国际货运航空股份有限公司北京地区统招岗位高校毕业生校园招聘19人考试笔试参考题库附答案解析
- 起重链条项目规划方案(模板)
- 2026中国航空器材集团有限公司校园招聘考试笔试备考试题及答案解析
- 武汉东湖车辆限行通知书
- 村里放烟花罚款通知书
- 林园西路停水通知书
- 达芬奇调色培训课件
- 2025山东能源集团中级人才库选拔笔试历年参考题库附带答案详解
- 现场液位计培训
- 2024年护士节护理知识竞赛试题及答案
- 2025年河北保定市12345政务服务便民热线话务服务人员10名考试模拟试题及答案解析
- 化工分析化学测试题答案及解析
- 2024人教版七年级数学上学期期中数学试卷(七年级上册人教第1-4章)试卷+解析
- 离子反应方程式配平课件
- 抖音团长培训课件
- 广东省深圳市多校2024-2025学年高一上学期11月期中考试生物试卷( 有答案)
- Unit 4 My family 话题写作(课件)英语冀教版2024七年级上册
评论
0/150
提交评论