jsp连连看系统论文_第1页
jsp连连看系统论文_第2页
jsp连连看系统论文_第3页
jsp连连看系统论文_第4页
jsp连连看系统论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

绪论1.1休闲游戏及发展根据《2011-2012年中国连连看休闲游戏游戏行业发展报告》显示,2011年中国连连看休闲游戏市场规模为26亿元,按正常发展速度到2016年达到74亿,此后将保持30%以上的增长率,在2020年达到200亿元。2011年前连连看休闲游戏用户虽然已经达到了一定规模,但由于缺乏有效的赢利模式支持,整个行业始终处于停滞不前的状态。艾瑞分析认为突破了这个瓶颈后,连连看休闲游戏在未来2-3年将进入迅猛增长阶段,在乐观的情况下,3年中连连看游戏市场规模复合增长率将达到70.5%,在2012年中国网页游戏市场规模将达到44亿元。艾瑞咨询:连连看休闲游戏成为了2012年中国新热点。通过访谈与交流,目前业内人士普遍看好连连看休闲游戏的发展前景,部分行业人士表示,与08年相比2012年休闲游戏用户至少达到400%的增长,增长的主要动力来源于用户和运营商的双重发展。由于做休闲游戏门槛较低,能吸引许多中小型团队加入研究和运营的行列,当运营商与产品数量急剧增加时,整个市场也将被充分调动起来,从而达到一个成倍增长的形势。连连看休闲游戏的最大的优势在于无需下载客户端,这使得这类游戏能更方便地被移植到其他移动终端中,如手机、掌机。这给上网受限制的用户提供了很大便利。此外艾瑞咨询认为一旦政府逐步实施在一线城市中建设广域网的计划,随着该网络的建成,连连看休闲游戏也将迎来新一轮的发展。1.2连连看游戏简介连连看,又称对对卡,是指图案配对的一种益智游戏,有多种形式,如卡片游戏、电子游戏或网络游戏)。与“找出两幅图片中的不同”类游戏同为比眼力的游戏。最早期的形式是一副卡片中每种图案有相同的两张,先洗牌,然后排好卡片,背面朝上,玩家轮流揭开卡片,每次揭两张,如两张图案不同则回复背面朝上的状态,如揭到两张图案相同则取走卡片,到桌上所有卡片都被取走时即结束游戏,手上最多卡片者为胜利者。由于玩法简单,常用作儿童启蒙教育游戏。又有一种字图连连看,是一种专供幼童识字认图的游戏,与一般连连看不同的是它并非以一对相同图案成对,而是以字配图成对。相关内容连连看则是以两张内容相关的卡片(可以是字或图)配成对代替相同图案。也有以扑克牌进行游戏的,把相同点数视为相同图案。连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。08年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。最新连连看版本:连连看5.0,很多人玩过单机版的连连看,但很少有人知道连连看的生命史,连连看是台湾的陈一进、简诚志先生改编、发明的一种桌面游戏。连连看的最新版本区别与以往各个版本主要特点有:1.全新引擎,游戏更为华丽、不再是静止不动。2.总共五种游戏模式、三种难度等级、十三种关卡。3.主题模式可自定义主题、玩家自己的图片、头像、音乐、链接将可进入游戏。4.革新的动态头像。5.漂亮的动态背景。6.联机模式、可以边和朋友语音聊天,边玩连连看。7.自带地图编辑器,可自己制作地图,并加入游戏。1.3本课题研究意义现在小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。连连看游戏就是典型了!游戏“连连看”,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除,规则简单容易上手。游戏速度节奏快,画面清晰可爱,老少皆宜。不管你走到哪个游戏网站,连连看游戏总是排在受玩家欢迎排名的前5位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络休闲小游戏。完成这次毕业设计,不仅可以提高我对知识的综合运用能力,增加实现项目设计的经验,同时让我深入地了解一个休闲游戏游戏的基本制作过程以及各项功能的实现,拓宽了自己的知识面。通过完成一个比较完善的休闲游戏游戏,我对图像编辑、程序设计等各方面的知识有了更深的理解,也为以后的工作和学习打下了很好的铺垫。2开发环境及背景知识简介2.1JAVA开发工具Java的开发工具很多,比如JBuilder、Eclipse、NetBeansIDE、JCreator等等,不同的工具可能对开发不同的程序有针对的优势。我选择Eclipse进行编写,我们说一下Eclipse的优势。★Eclipse是一种具有可扩展的开放源代码IDE。Eclipse可以在同一IDE中集成了来自不同供应商的工具,并实现了工具之间的相互操作,从而显著简化了项目工作流程。★Eclipse框架的灵活性来自于它的扩展点。在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从简单字符串,到一个Java类的描述。★Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件。2.2Java简介 Java是一种简单的、分布式的、面向对象的、可移植、解释的、安全的的多线程语言。它以其平台无关性、硬件结构无关性、强安全性、面向对象、语言简洁的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言。2.3Java的起源和发展 Java是Sun公司在1995年推出的新兴的编程语言,它是一种跨平台的、应用于当前高速发展的网络的编程语言。在编程语言中,可认为Basic语言促使了C语言的出现,C语言促进了C++的出现,而C++又促使了Java语言的出现。 自从Java正式推出后,以它特有的优势迅速发展,经过几年的发展,Java已经在软件开发等领域占有很大的市场。Java分为三种:J2SE、J2EE和J2ME。J2SE是Java平台标准版[3],主要应用于桌面程序和Java小应用程序开发;J2EE主要用于企业级开发和大型网站的开发;J2ME主要用于手机等移动设备程序的开发。2.4Java特点★平台无关性Java的平台无关性能让这种软件在每个平台上都能正常地运行,就是"只要写一次程序,在任何地方、任何时间该程序永远都能够运行"。Java解释器生成与体系无关的字节码指令,这些指令对应于Java虚拟机里表示,Java解释器得到字节码后,对它进行转换,只要安装Java运行系统,Java就可以在任何处理器上运行。 ★简单性 Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只要知道一些概念就能够编写一些应用程序。★多线程 设计Java的多线程,是为了满足人们对创建交互式网上程序的需要。用Java编写出来的应用程序可以同时执行很多任务。多线程机制使应用程序可以并行执行,而且同步机制保证了对共享数据的正确操作。★健壮性 Java语言被病毒感染和破坏得最少。Java丢弃了难学和危险的指针功能,而大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,从而使程序不安全。★面向对象语言 Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。 ★自动内存管理也可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的很关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某些集合内,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或被删除后再建。这种操作可能执行很多次,很多语言要手工清空或删除集合数据结构。Java的自动内存管理[4]正好解决这一点,它使程序员不用再为内存管理写大量的代码。2.5Java图形编程Java中的Graphics类是一个工具类,用来绘图和显示格式化文本,Graphics类是在java.awt包中声明的。在Java程序中绘图必须在一个窗口或者是一个容器中进行,绘图窗体经常被设计为一个组件容器。显示格式化文本和绘图是调用Graphics类的drawXX()方法完成的,例如drawString(String)等等。绘图采用的坐标系[6]是原点在左上角,纵轴向下以像素为单位的坐标系。2.6面向对象的开发思想面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象的基本概念:1.对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。2.对象的状态和行为。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中3.类。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。4.类的结构。在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。(1)一般——具体结构称为分类结构,也可以说是“或”关系,或者是“isa”关系。(2)整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“hasa”关系。5.消息和方法。对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。面向对象的特征:1.对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。2.分类性。分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。3.继承性。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。4.多态性(多形性)。多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。面向对象的要素:1.抽象。抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。类实现了对象的数据(即状态)和行为的抽象。2.封装性。封装性是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。3.共享性。面向对象技术在不同级别上促进了共享同一类中的共享。同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。在同一应用中共享。在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。3系统初步分析与设计3.1设计原理本设计采用单机模式,当在规定的时间内消完全部的图片则当前关卡通过,如果在规定的时间内没能消完所有的图片则游戏结束,结束后可以选择重新开始新游戏。游戏规则是模仿普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。在两张相同图片用三根以内的直线能连在一起,就可以消去;否则,不予处理。游戏过程,如果玩家在一定的时间内消完则提示玩家胜利,并进入下一关。如果在一定时间内图片没有消完则提示玩家Failed。考虑到本游戏软件是单机小游戏,所以充分考虑到了它的娱乐性,并没有很复杂的功能。3.2方案选择在概要设计阶段,主要有两中方案可供选择:一、所有的图片都是按约定好的种类数和在同一区域的重复次数随机出现,并且每张图片的的出现次数为偶数,时间会有限制,每一关的图片数量或时间是不同的,这样就增加了游戏的难度。二、在同一区域中,图片出现的重复次数是可以由玩家选择的,时间由游戏约定。不过玩家选择的种类数和重复次数必须是偶数才可以顺利完成游戏,否则游戏虽然可以正常运行,但无法完成游戏。在第一种方案中,由于出现的图片的种类数和重复次数都由软件约定,这样就缺乏玩家自主选择的空间,只是在玩游戏时系统已经是设定好的游戏,不能改变什么,这样就在无意中降低了玩家在游戏的过程中乐趣,最后致使玩家放弃继续玩下去。我们参考了网络上的连连看游戏,考虑到游戏的娱乐性。所以我们放弃第一种方案的设计思想,参考网络上流行的连连看的游戏,选用第二种方案。3.3系统可行性分析游戏的操作可行性其实是一个游戏成功与否的关键,在很多著名游戏中游戏操作合理性经常成为玩家讨论的焦点,所以说游戏设计的合理性既是需要考虑的关键也是对玩家选择此游戏的主要吸引力。游戏时间不能过长也不能过短,在经过反复思考和老师的指导后,决定将时间做成第一关3分钟左右,往后逐渐递减。这一决定保证了游戏的正常完成,同时也是考虑到了制作时间的限制。在“连连看游戏”设计中,在游戏中玩家可以通过每消去两个图片,都可以得到增加游戏剩余时间的机会。而在进入第二关后,随着游戏复杂性和难度的提升,再加上游戏时间的逐渐减少,因而在这样的设计下,玩家可以感受到游戏的可玩性,同时也可以享受到完成游戏的成就感。3.4系统功能需求的分析我们认为我们的连连看游戏主要可分为三大部分即欢迎部分、游戏部分、图形部分。(1)欢迎部分打开软件后,首先展示给用户的是一个欢迎动画,随后就是主界面,包含了“开始游戏”、“游戏设置”、“关于游戏”和“退出游戏”四大模块。(2)游戏部分玩家点击“开始游戏”后,进入游戏界面。如果玩家在规定的时间内将所有的图形消掉,系统提示玩家:恭喜过关,并进入下一关。在系统所给的时间内没有消掉所有图形则将退出游戏,并提示:游戏结束!如果玩家自行选择炸弹,可以直接继续进行游戏。如果游戏出现了死锁的情况(也就是说没有图形可以相消的情况),系统会提示玩家:没有可以消的方块了,请使用游戏道具炸弹;然而“炸弹”每一次的游戏中最多只能用两次,如果重列用完了之后还出玩死锁情况,系统便自动再次重新排列,直到不出现死锁。(3)图形部分图形部分是用来管理图形的。包括图形的图片,图形的随机排列,图形的显示和消除等。4基于JAVA的连连看游戏的详细设计4.1游戏流程详细设计当玩家点击“开始游戏”后,玩家在规定时间内消去全部图片,即可进入下一关,如果没有在规定时间内消去全部图片,则失败。玩家在游戏过程中,可以点击“菜单”按钮,选择“重新开始游戏”、“重新排列图片”和“退出游戏”;当玩家在菜单里选择“退出游戏”后,将进入系统主界面,当玩家点击“游戏设置”后,可以对游戏的包括声音、震动、选关等各方面进行设置,当进行完设置之后,可以点击“保存退出”对所做操作进行保存;当玩家点击“保存退出”后,将进入系统主界面,当玩家点击“关于游戏”后,还可以看到游戏的帮助文档,向玩家介绍本游戏的使用方法。当玩家点击主界面的“退出游戏”,即退出连连看游戏程序。下面两图既是游戏的初步流程图和详细流程图图4.1游戏流程图4.2软件功能模块设计系统总共分为三个功能部分,分别是:“菜单设计”,“界面设计”,如图4-3所示:图4-3系统总体设计菜单设计,总共分为四个模块,分别是:“开始游戏”,“游戏设置”,“规则说明”和“退出游戏”,如图3-4所示:图4-4菜单设计界面设计,总共分为三个模块,分别是:“框架设计”,“地图设计”和“进度条设计”,如图4-5所示:图3-5界面设计4.3软件算法的详细设计4.3.1消除算法设计及原理下图是本软件设计详细算法图:图4.6连连看游戏算法流程图其中,图片能相连的情况如下图所示:图4.7可以相连相消去的情况示意图1:两张图片是相同的2:两张图片之间连线的折点不超过两个。那么两张图片的连接情况可以分为三种情况:(1)直线相连(2)一个折点(3)两个折点;由此分析我们知道,每一个折点必定有且至少有一个坐标(x或者y)和两张图片中的任意一张图片是相同的,即折点必定在两张图片所在的x方向或y方向的直线上,只有这样两张图片才能在不超过两个折点进行连接。所以得出路径的判断是:假设两张图片A,B,如果有两个折点分别在x,y那么(1):如果验证A,B直线连线,则连接成立(2):搜索以A,B的x,y方向四条直线(可能某两条直线会重合)上的有限点,每次取两点作为z1,z2,验证A到z1/z1到z2/z2到B是否都能直线相连,是则路径连接成立否则连接不成立。4.3.2地图生成算法排列我们设地图是一个mxn二维数组。生成算法要求生成一个不总有连续标记出现的二维数组,数组中每个元素都要现偶数次。分析:这个数组必须要有偶数个元素:所以m*n%2==0;其他就是考虑出现偶数次数据和乱序排列的问题了。现在我们设m=6,n=6进行讨论。并设现在数组中共有6个元素可供选择,不要求所有元素都出现,但如果出现必须出现偶数次。方法一:先生成一个顺序排列的二位数组如:1map[m][n]={{1,2,3,4,5,6},2{1,2,3,4,5,6},3{1,2,3,4,5,6},4{1,2,3,4,5,6},5{1,2,3,4,5,6},6{1,2,3,4,5,6},}然后循环遍历数组元素和数组中任意位置的数交换,得到打乱顺序的数组。7map[m][n]={{1,4,2,5,6,2,}8{2,1,6,5,1,2,}9{1,2,3,5,3,4,}10{1,4,3,6,6,6,}11{4,6,3,5,3,5,}12{4,2,5,1,4,3,}}此方法生成初始数组的过程简单,但是初识变量需要人为规定好如何布局,以确保有偶数个元素出现,并且每个元素出现的次数固定,对元素个数也有一定要求。随机打乱后数组元素的离散度不高。我们改进算法如下:1、根据数组可用元素个数x,先生成二维数组的前m*n-x个元素。这些元素的值随机取任意有效值(可让每个元素与前方,上方元素不等)。2、另开辟一长度x的一维数组a[x]记录每个有效值出现的次数。3、根据a将出现奇数次的元素排列于二维数组末尾,其余位置用随机一对儿相投元素填充。4、将二维数组的最后x个元素与任意数组元素交换位置。5系统详细功能测试及说明5.1系统主界面由于这个程序的界面并不是很复杂,所以用到的控件也不多,主要核心内容还是后台的代码设计。图片的随机生成主要是用到一个random()函数将随机数赋值给flag[]数组中的每个元素,然后根据数组元素值,来显示片。在色彩上设计方面总结人们的视觉习惯和色彩对眼睛的健康影响,决定对于画布采用蓝色背景,给人一种天空般的想象;下边的控制区为配合整体色调选用了浅蓝,这样即看上去比较整体美观又界面分明,开始游戏控件选用了高贵的紫色,游戏时使得很容易发现开始游戏控件;重列控件采用蓝色;重新开始采用空心字体。游戏界面的整体颜色采用的都是暖色调,符合人们的心理需求,这样更能给玩连连看游戏的游戏者带来轻松的感受,赞加游玩的快乐。图5.1连连看主界面主页生成的部分关键代码: publicstaticColorDarkColor=newColor(55,77,118);//暗色 publicstaticColorLightColor=newColor(111,146,212);//亮色 publicstaticImageIcon[]BlocksIcon=newImageIcon[40];//游戏中方块的图标 publicstaticImageIconGuideIcon;//连线的图标 publicstaticBorderunSelected=BorderFactory.createLineBorder(DarkColor,1);//未选中时的边框 publicstaticBorderSelected=BorderFactory.createLineBorder(Color.white,1);//选中后的边框 publicstaticBorderHint=BorderFactory.createLineBorder(Color.green,1);//提示的边框 DimensionfaceSize=newDimension(780,500); Imageicon; privateintcounter=0; JPaneltoolBar=newJPanel();//工具栏 JPanelactionPanel=newJPanel();//用户操作栏 JPanelcontentPanel=newJPanel();//容器 JPanelstatusPanel=newJPanel();//状态栏 BorderemptyBorder=BorderFactory.createEmptyBorder();//未选中时的边框 JButtonstartButton=newJButton();//"开始" JButtonrefreshButton=newJButton();//"刷新" JButtonhintButton=newJButton();//"提示" JButtonbombButton=newJButton();//"炸弹" JButtondemoButton=newJButton();//"演示" JButtonsetupButton=newJButton();//设置 JButtonhelpButton=newJButton();//帮助 JButtonaboutButton=newJButton();//关于 JButtongoTop10=newJButton("Gotop10"); HelpDialoghelpDialog;//帮助对话框 AboutDialogaboutDialog;//关于对话框 publicstaticJTextFieldstatusField=newJTextField( "欢迎使用Dota连连看"); ImageIconimgStart,imgHint,imgRefresh,imgBomb,imgDemo; ImageIconimgSetup,imgHelp,imgAbout; JButton[]dots=newJButton[Setting.ROW*Setting.COLUMN]; Settingsetting=newSetting(); MapUIui; Mapmap; ClockAnimateclock=newClockAnimate();//时钟 ScoreAnimatescore=newScoreAnimate();//分数 AnimateDeleteanimateDelete=newAnimateDelete(dots); Musicmusic=newMusic(); publicKyodai(){ initResource();//初始化系统所需要的资源 map=newMap(); ui=newMapUI(map,dots); initUI();//初始化用户界面 ui.setScore(score); ui.setClock(clock); ui.setTop10Button(goTop10); animateDelete.setSpeed(setting.Animate); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); this.setSize(faceSize); //设置运行时窗口的位置 DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((int)(screenSize.width-faceSize.getWidth())/2,5.2帮助文档单击帮助,可以查看规则等其他必要知识,方便图5.2帮助文档界面5.3系统的运行进入游戏之后,我们可以进行游戏:消除图片时要判断是否可达,即优化判断是否可以消除的算法是本程序的灵魂,连连看游戏分为三种消去方式,分别为“0折型”,“一折型”,“两折型”,由图4-5可以看出,如果两点间只需要一条直线能够连接起来,则A、B两点的横坐标或纵坐标必定相同,有了这个条件,我们判断A、B两点是否只需要一条直接连接就简单了许多。图5.3.1游戏界面(1)部分关键代码如下:ackagecom.dikey;importjavax.swing.*;importjava.awt.*;/***计算和显示所得分数*/publicclassScoreAnimateextendsJPanelimplementsRunnable{ privatevolatileThreadthread; //privatebooleanisPainting=false; publicintlastScore,currentScore; Colorcolor=newColor(255,255,0); Fontfont48=newFont("serif",Font.BOLD,42); java.text.DecimalFormatdf=newjava.text.DecimalFormat("0000"); /** *构造函数 */ publicScoreAnimate(){ this.setMinimumSize(newDimension(156,48)); this.setPreferredSize(newDimension(156,48)); } /** *分数的绘制 */ publicvoidpaint(Graphicsg){ Graphics2Dg2=(Graphics2D)g; Dimensiond=getSize(); g2.setBackground(newColor(111,146,212)); g2.clearRect(0,0,d.width,d.height); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(color); g2.setFont(font48); g2.drawString("$"+df.format(lastScore),20,40); } publicvoidstart(){ thread=newThread(this); thread.start(); } publicvoidrun(){ ThreadcurrentThread=Thread.currentThread(); while(thread==currentThread&&lastScore<currentScore){ try{ lastScore++; repaint(); thread.sleep(50l); } catch(InterruptedExceptionex){ } } } publicvoidsetScore(intl,intc){ this.lastScore=l; this.currentScore=c; start(); } publicvoidstop(){ if(thread!=null){ thread=null; } }}图5.3.2游戏界面(2)总结“连连看”游戏的基本功能都已经实现了,其中很多变量之间数据的传递都很复杂,要搞不明白就没办法再往下做了,路径判断问题中用到数据结构的知识,也很抽象,代码量也很大,另外这个游戏不会用到数据库,所用功能也很少,只需要判断用户每次鼠标点击的坐标以及当前坐标位置代表的图片内容就好了通过这次“连连看”游戏的设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的

温馨提示

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

评论

0/150

提交评论