基于java的连连看游戏

合集下载

基于java的连连看游戏

基于java的连连看游戏

基于JAVA的《连连看》游戏一引言《连连看》游戏在网上种类非常多,比如《水果连连看》,《宠物连连看》等等,虽然版本各种各样,但是其基本玩法,或者说基本算法是相同的,就是显示一些图标,让用户依次去点击两个图标,如果这两个图标相同,并且这两个图标通过直线可以相连,或者通过直角相连,或者通过双折线相连就可以消掉,消掉所有图标即为胜利。

如图1所示:图1 正在进行中的连连看游戏通过该游戏的制作,我们可以对Java的基础语法、Java图形界面以与简单的算法设计有一个比较全面的了解。

二设计要求为了避免叙述的繁琐,我们只实现连连看游戏的基本功能,如下:●制作如图1所示的游戏界面,尽量做到美观大方,使用方便●当两个图标相同,且通过直线相连、直角相连、双折线相连时,能够消掉图标●能够让游戏随时暂停,然后继续●当游戏进行到一定程度,无法消除剩余图标时,要能够提供重排功能对图标进行重排,从而让游戏继续进行三实现思路我们先讲一下程序中的几个难点,主要是说清楚具体的实现思路,具体的代码会在文后给出,大家可以参考。

1、界面设计需要实现如图2所示的界面:图 2 连连游戏界面整个界面分为三个区域:菜单区、功能区、游戏区。

首先在窗体上放置三个面板JPanel,分别存放三个区域,如图3所示:图3 界面的设计系统菜单区放置菜单即可,用户游戏区放置一个8*9的按钮数组来构成游戏界面,用户交互区放置开始,暂停等功能按钮以与提示信息。

2、生成游戏区运行程序后,游戏区并不显示按钮数组,当点击开始按钮后,再自动生成。

在生成按钮时要求按钮上的图案是随机的,且每个图案必须是偶数,否则会出现无法消除的按钮。

如何实现呢?我们可以这样考虑:假设有12个图片,把图片名字按照数字序号从0到11命名;假设游戏区共72个按钮,那么产生36个12以内的随机数字(每个随机数字代表一个图片),放入一个ArrayList中,最后使用ArrayList的addAll方法对已经产生的36个随机数字复制一份,这样就获得了72个随机数字,并且是成对的。

基于java的连连看游戏设计与实现的研究报告

基于java的连连看游戏设计与实现的研究报告

基于java的连连看游戏设计与实现的研究报告随着信息化时代的发展和互联网的普及,网络游戏成为现代生活的重要组成部分之一,连连看游戏作为其中的佼佼者一直深受玩家们的喜爱。

本次研究以Java语言为基础,设计并实现了一款基于图形用户界面的连连看游戏,从游戏设计、编程实现以及测试三个方面进行详细介绍。

一、游戏设计该连连看游戏设计的基础是二维数组。

玩家通过鼠标点击选择两个同样的图片,连接它们的线路不能经过其他图标,且路径短优先。

游戏共18个关卡,每个关卡的难度依次递增,并拥有不同主题的图片素材。

二、编程实现该游戏使用Java Swing绘制图形用户界面,整个游戏主要包括五个类:Main、Game、Node、Action、Panel。

1.Main类:主要作用为程序入口。

通过创建Game对象启动游戏。

2.Game类:游戏类。

在该类中主要完成游戏的初始化、监听器、关卡切换、连通性判断等操作。

3.Node类:节点类。

主要用于表示每一个图标,包括坐标以及图标种类等信息。

4.Action类:动作类。

主要用于计算玩家所选的两点是否可以连通。

5.Panel类:面板类。

界面主要交由Panel完成。

在该类中完成了界面布局、游戏信息展示等工作。

三、测试在游戏的测试过程中,主要测试了游戏的各个关卡能否正常切换和连通性判断能否正常运行。

此外,还通过在不同操作系统和不同分辨率下的测试,保证了游戏适用性和兼容性。

四、总结本次研究成功地设计并实现了一款基于Java的连连看游戏。

通过该游戏的设计与实现过程,进一步深入了解了Java编程语言以及Swing界面库的应用与优势。

最终测试结果表明,该游戏在各种操作系统和分辨率下均表现出良好的兼容性和适用性,可供广大玩家使用。

但仍有一些不足之处,需要进一步完善和优化。

在本次基于Java的连连看游戏设计与实现研究中,我们对玩家游戏数据进行了收集与分析。

具体数据如下:1. 游戏总胜利次数:1022. 最高得分:97633. 游戏失败次数:464. 游戏累计时间:20小时15分通过对这些游戏数据的分析,我们可以得出以下结论:1. 游戏整体受欢迎度较高,玩家胜利次数较多。

基于Java的“连连看”游戏

基于Java的“连连看”游戏

功 能 区面 板
游 戏 区面 板
4 . 2 菜 单
菜 单 的 功 能 均没 有 实 现 .读 者 可 以 自行 添 加 :
J B u t t o n [ ] [ J J L a b e I
J L a b e l
Ti me r
d o t s t i m e s t r
J Bu t t o n
s t a r t
开 始 按 钮
J Me n u me n u G a me=n e w J Me n u ( ” 游戏“ ) : J Me n u me n u Se t= n e w J Me n u ( ” 设置“ ) :
J Me n u me n u H e l p= n e w J Me n u ( “ 帮助” ) :
t h i s . s e t S i z e ( 7 8 0 , 5 0 0 ) ;
t h i s . s e t T i t l e ( “ 连连看游戏” ) :
t h i s . S e t D e f a u l t C I o s e Op e r a t i o n ( J F r a me . E X I L ON — C L OS E ) : a d d my Me n u 0 ; / / 添 加 菜 单 a d d F u n c t i o n P a n e I ( ) : ∥添 力 口 功台 E 区
表 2 L i n k Ga me类 中的 方 法
方 法 名 方 法 功 能
I ma g e l c o n ( “ i ma g e / 2 . g i f “ ) ) ) : me n u He l p . a d d S e p a r a t o r ( ) :

连连看游戏java课程设计

连连看游戏java课程设计

连连看游戏java课程设计一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,如类、对象、继承、封装等;2. 学会使用Java编写连连看游戏的界面布局和逻辑控制;3. 掌握运用Java集合框架处理游戏数据结构;4. 了解Java事件处理机制,并能应用于游戏交互。

技能目标:1. 能够运用面向对象的方法设计游戏类和对象,实现游戏功能;2. 独立编写连连看游戏的界面和逻辑代码,完成一个完整的Java游戏项目;3. 学会使用集合框架优化游戏数据存储和访问;4. 提高问题分析、程序设计和调试能力。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和创新能力;2. 培养学生合作学习、分享交流的良好习惯,提高团队协作能力;3. 强化学生的逻辑思维能力,提高解决实际问题的能力;4. 培养学生面对挑战时的积极态度,勇于克服困难,持续优化和完善自己的作品。

课程性质:本课程为信息技术学科选修课程,以项目为导向,注重实践操作和团队合作。

学生特点:学生具备一定的Java编程基础,对游戏开发有浓厚兴趣,具有较强的动手能力和创新能力。

教学要求:结合实际项目需求,引导学生运用所学知识解决问题,注重培养学生的编程能力和团队协作能力,提高学生的综合素质。

通过本课程的学习,使学生能够独立完成一个连连看游戏的Java课程设计。

二、教学内容1. 面向对象编程基础复习:复习Java中类与对象、继承、封装等基本概念,参考教材第二章。

2. 游戏界面设计:学习使用Java的Swing库设计连连看游戏界面,包括菜单、按钮、网格布局等,结合教材第四章。

- 界面组件及布局管理器;- 事件监听器和处理机制;- 图形和图标的使用。

3. 游戏逻辑实现:学习实现游戏核心逻辑,如数据结构设计、游戏规则、配对消除等,参考教材第六章。

- 集合框架的使用;- 算法实现(如查找、排序);- 游戏流程控制。

4. 游戏对象设计:设计游戏中的对象类,如卡片类、游戏引擎类等,运用封装、继承等面向对象原则,参考教材第三章。

基于java的连连看小游戏程序

基于java的连连看小游戏程序

基于java下的连连看小游戏程序package mybase.programe;/** lianliankan总体算法思路:由两个确定的按钮。

若这两个按钮的数字相等,就开始找它们相连的路经。

这个找路经* 分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。

这样就会有* 三条路经。

若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了)* 1.相邻** 2. 若不相邻的先在第一个按钮的同行找一个空按钮。

1).找到后看第二个按钮横向到这个空按钮* 所在的列是否有按钮。

2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。

3).没有的话,再从* 与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。

没有的话路经就通了,可以消了.** 3.若2失败后,再在第一个按钮的同列找一个空按钮。

1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮。

* 2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。

3).没有的话,再从与第一个按钮同列的* 那个空按钮横向到与第二个按钮同列看是否有按钮。

没有的话路经就通了,可以消了。

** 若以上三步都失败,说明这两个按钮不可以消去。

*/import javax.swing.*;import java.awt.*;import java.awt.event.*;public class LianLianKan implements ActionListener {JFrame mainFrame; // 主面板Container thisContainer;JPanel centerPanel, southPanel, northPanel; // 子面板JButton diamondsButton[][] = new JButton[6][5];// 游戏按钮数组JButton exitButton, resetButton, newlyButton; // 退出,重列,重新开始按钮JLabel fractionLable = new JLabel("0"); // 分数标签JButton firstButton, secondButton; // 分别记录两次被选中的按钮// 储存游戏按钮位置(这里其实只要6行,5列。

基于Java的图片连连看游戏设计研究

基于Java的图片连连看游戏设计研究

基于Java的图片连连看游戏设计研究基于Java的图片连连看游戏设计研究摘要:连连看(Link Up)游戏是一款经典的益智游戏,通过消除相同的图案来获得分数。

本文基于Java编程语言,对连连看游戏的设计进行深入研究。

通过实现游戏的基本功能和特色功能,对游戏进行优化和改进,提升游戏的用户体验。

通过实践验证,本设计具有一定的可行性和实用性。

1. 引言连连看游戏是一种非常受欢迎的益智游戏,其规则简单,操作容易上手。

随着移动互联网的快速发展,游戏市场越来越庞大。

设计一款基于Java的图片连连看游戏,可以满足用户对游戏的需求,同时也是提升自己编程能力的学习机会。

2. 游戏的基本功能设计2.1 游戏界面设计游戏主界面分为游戏区和得分区。

游戏区由多个方格组成,每个方格里面有一张图案,玩家需要通过点击两个相同的图案来消除它们。

得分区显示玩家的得分、剩余时间和游戏关卡等信息。

2.2 游戏规则设计游戏开始时,系统会随机生成一定数量的图案并填充到游戏区中。

玩家需要通过连接相同的图案来消除它们,直到清空游戏区中所有的图案。

连接两个图案的连线只能是水平或垂直直线,并且在连线路径上不能有其他图案阻挡。

玩家每消除一对图案,得分增加,游戏关卡随之升级。

如果无法连接两个图案,玩家可以使用提示功能获取一定的帮助。

3. 游戏特色功能设计3.1 计时功能游戏设置了一个倒计时器,玩家需要在规定的时间内完成游戏。

当倒计时为0时,游戏结束,系统会显示玩家的得分和游戏结束画面。

3.2 关卡功能游戏设计了多个关卡,每个关卡的游戏难度和图案数量都不同。

玩家需要通过完成前一关卡的要求才能解锁下一关卡。

3.3 提示功能当玩家遇到无法连接的图案时,可以使用提示功能,系统会自动给出可以连接的图案,并帮助玩家找到解决方案。

4. 游戏的优化与改进4.1 性能优化在游戏的设计过程中,需要考虑到游戏的性能问题。

通过合理的算法设计和资源管理,减少游戏的内存占用和运行时的开销,提高游戏的运行速度和流畅度。

基于Java的连连看游戏设计研究

基于Java的连连看游戏设计研究

1、游戏平衡性:为了保持游戏 的公平性和挑战性,需要合理设 置不同难度等级的关卡
2、图片识别算法:连连看游戏 需要识别相同的图片并进行连接
实际应用
本游戏的Java实现可以广泛应用于各种平台,如PC、移动设备和嵌入式设备。 此外,该游戏的设计思路和算法也可以应用于其他类型的连连看游戏,如文字连 连看、图形连连看等。因此,本研究的实际应用前景广阔。
谢谢观看
总结
本次演示对基于Java的图片连连看游戏设计进行了深入研究,分析了玩家需 求和开发者需求,阐述了具体的游戏设计方法,探讨了可能遇到的难点和挑战, 并展示了实际应用效果。本研究的成果不仅为其他连连看游戏开发者提供了有价 值的参考,也有助于推动Java游戏开发领域的发展。
在未来的研究中,可以进一步拓展连连看游戏的玩法和内容,提升游戏的趣 味性和挑战性,同时不断优化算法和程序性能,为玩家带来更好的游戏体验。
3、计时器
为了控制游戏的进行,我们需要创建一个计时器。我们可以使用Java Timer 类来创建一个定时器,每隔一段时间就更新游戏状态。
四、测试与优化
完成游戏的基本设计与实现后,我们需要进行一系列测试和优化工作。首先, 我们需要测试游戏的稳定性和正确性,确保所有的图案都可以正确地生成和显示。 其次,我们需要测试游戏的性能,确保在各种不同配置的计算机上都可以流畅地 运行游戏。最后,我们还需要对游戏的界面进行优化,以提供更好的用户体验。
参考内容
一、引言
在当今的计算机时代,越来越多的计算机用户开始应用程序和游戏的开发。 其中,连连看游戏是一种广受欢迎的休闲游戏,它主要考验玩家的观察力和反应 速度。Java作为一种流行的编程语言,被广泛应用于各种应用程序和游戏的开发。 本次演示将详细介绍如何使用Java设计和实现一个简单的连连看游戏。

基于java的连连看游戏的设计与实现毕业论文

基于java的连连看游戏的设计与实现毕业论文

本科毕业设计(论文)题目:基于java的连连看游戏的设计与实现专题题目:学院:软件学院专业:软件工程班级:软件冶金学号:学生:指导教师:职称:指导教师:职称:时间:年月日江西理工大学本科毕业设计(论文)任务书软件学院软件工程题目:基于java的连连看游戏的设计与实现专题题目(若无专题则不填):原始依据(包括设计(论文)的工作基础、研究条件、应用环境、工作目的等):●工作基础已经熟练的掌握java的各种基本技能,能够完成一款简单的基于java的连连看游戏的设计与实现。

●研究条件MyEclipse或者Eclipse和jdk 7的环境下编写整体的代码,用photoshop为游戏提供大量精致的图片素材。

●应用环境java当今最流行的语言,完全能够实现连连看游戏,硬件要求也不高,所以可行性是没有问题。

●工作目的连连看这款游戏的最基本架构,是如何实现消除相同的图片,并且如何有效的最短的消除路径。

主要内容和要求:(包括设计(研究)内容、主要指标与技术参数,并根据课题性质对学生提出具体要求):●研究内容1.用户登录注册系统(选做)2.游戏的基本逻辑实现(必做)3.游戏排行榜系统(必做)4.游戏的有难度梯度效果(必做)5.游戏的界面设计(必做)●主要技术指标与技术参数能够完整的完成游戏的体验成为可以娱乐的游戏。

具体要求独立完成本项目系统研制过程,系统能够顺利运行,并独立完成论文报告。

日程安排:1、1、毕业设计开题2016年3月30日前完成2、第一、二周需求分析3、第三、四周概要设计4、第五、六周详细设计5、第七、八、九周系统开发6、第十周系统测试7、第十一、十二周毕业设计论文整理8、提交毕业论文2016年5月8日前完成主要参考文献和书目:[1]Cay S. Horstmann, Gary Cornell .Java核心技术[M].北京:机械工业出版社,2014.[2]Bruce·编程思想(第4版)[M].北京:机械工业出版社,2007.[3]孙涌.现代软件工程[M].北京:北京希望电子出版社,2003.[4]赵满来.可视化Java GUI程序设计[M].北京:清华大学出版社,2010.[5]David Wallace 游戏高级编程[M].北京:清华大学出版社,2005.[6]王鹏.JavaSwing图形界面开发与案例详解[M].北京:清华大学出版社,2008.指导教师签字:年月日教研室主任签字:年月日江西理工大学本科毕业设计(论文)开题报告软件学院软件工程专业软题目:基于java的连连看游戏的设计与实现专题题目(若无专题则不填):本课题来源及研究现状:●课题来源:小游戏制作的目的是满足人们休闲的需要,在紧张工作之余休闲类的游戏可以给人带来最大程度的放松,也可以增进人们之间的交流。

JAVA课程设计连连看(含代码)

JAVA课程设计连连看(含代码)

Java程序课程设计任务书1、主要内容:本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。

2、具体要求(包括技术要求等):a. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。

方块上随机分布一些数字,数字的要求是至少两两相同,位置随机打乱。

b.当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。

c. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。

d. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。

e.运用基于SWING的图形用户界面设计知识等。

3、学习并掌握以下技术:Java等4、熟练使用以下开发工具:Jcreate 等实现系统上述的功能。

三、计划进度12月28日-12月29 日:课程设计选题,查找参考资料12月30日-12月31日:完成需求分析、程序设计1月1日-1月3日:完成程序代码的编写1月4日-1月6日:系统测试与完善1月7日-1月8日:完成课程设计报告,准备答辩四、主要参考文献[1] (美)埃克尔著陈昊鹏,饶若楠等译. Java编程思想[J]. 机械工业出版社,2005[2](美)Gary J.Bronson著张珑刘雅文译. Java编程原理[J]. 清华大学出版社,2004[3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电出版社,2005.9[4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗出版社,2005[5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J]. 清华大学出版社,2005[6](美)David Brackeen著邱仲潘译. Java游戏编程[J]. 科学出版社,2004[7] 聂庆亮编著. Java应用开发指南[J]. 清华大学出版社,2010[8] 耿祥义,张跃平编著. Java面向对象程序设计[J]. 清华大学出版社,2010[9] 杨绍方编著. Java编程实用技术与案例[J]. 清华大学出版社,2000.11[10] 明日科技编著. Java编程全能词典[J]. 电子工业出版社,2010摘要随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,包括医药,汽车工业,手机行业,游戏,等等地方。

Java课程设计连连看游戏(含代码)

Java课程设计连连看游戏(含代码)

Java程序课程设计任务书一、主要任务与目标1、了解图形用户界面的概念;2、了解AWT的基本体系结构,掌握窗口的基本原理;3、掌握几种布局管理器的使用方法;4、掌握java的事件处理机制;5、了解Swing的基本体系结构,掌握Swing组件的使用方法;6、掌握java小程序的工作原理和使用方法;7、该游戏还将设置退出,再来一局按钮,并实现相应的功能。

8、设计一个用户注册登录界面二、主要内容与基本要求游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。

当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。

在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。

该游戏由30张不同的图片组成,游戏开始将会出现30张随机组合的图片,在规则下点击两张相同的图片后图片将会消失。

图片全部消完为游戏成功。

游戏还将设置退出,再来一局的按钮,和倒计时的功能,方便用户进行操作。

并且有一个用户登录注册界面,玩家必须登录以后才可以进行游戏。

三、计划进度12月28日~ 12月29日:课程设计选题,查找参考资料12月30日~ 12月31日:阅读参考书籍,收集资料,完成需求分析1月1日~ 1月3日:系统的代码设计及实现,数据库设计与实现1月4日~ 1月5日:系统的调试,修改,完善1月6日~ 1月7日:完成课程设计报告,准备答辩四、主要参考文献[1] 刘宝林.Java程序设计与案例习题解答与实验指导[M].[2] 王鹏何云峰.Swing图形界面开发与案例分析[M].[3](美)Karl Avedal , Danny Ayers, Timothy Briggs. JSP编程指南[M]. 电子工业出版社, 2004,47-125.[4](美)Mark Linsenbardt. JSP在数据库中的应用与开发[M]. 希望电子出版社,2005,210-236.[5] Dianne Phelan,Building a simple web database application[C].IEEE InternationalProfessional Communication Conference, 2004, 79-86.[6](美)Karl Avedal,Danny Ayers,Timothy Briggs.JSP编程指南[M].电子工业出版社,2006,47-125.[7] Dianne Phelan,Building a simple web database application[C].IEEE InternationalProfessional Communication Conference, 2005, 79-86.[8] Altendorf. Eric, Hohman. Moses, Zabicki. Roman. Using J2EE on a large,web-based project[J]. IEEE Software.2002,19(02):81-89.摘要当今社会,休闲型游戏越来越得到人们的喜爱,我所做的毕业设计实例“连连看游戏的设计与实现”是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不高,娱乐性强,易于上手。

基于java的连连看游戏设计与实现

基于java的连连看游戏设计与实现

基于java的连连看游戏设计与实现Introduction连连看游戏是一种休闲益智游戏,旨在通过找到相同的图案来消除不断出现的图案。

本文将介绍如何在Java中设计和实现连连看游戏,包括图形界面、游戏逻辑和算法等方面的内容。

设计与实现1.图形界面Java提供了Swing框架,可以实现图形化界面。

多数连连看游戏都采用了类似于网格和游戏区域的布局。

可以使用JPanel 和JLabel组件在Java中创建一个类似于矩阵的网格。

可以将JPanel设置为GridLayout管理器,以便轻松布局。

JLabel被用来实现图像方块,只需将它们放在GridLayout的单元格中即可。

为了最大化游戏的效果,可以添加一些动画效果。

比如,当找到匹配的图案时,可以添加一个短时停顿来增加游戏的重心。

可以添加颜色效果,如淡出、变暗、变亮、闪烁等等,用来表示连接和匹配的图案。

2.游戏逻辑连连看游戏的逻辑可以分为三个部分:①初始化:游戏开始时,需要初始化游戏板。

为了防止一开始布局重复,可以使用随机数生成算法随机生成图案的布局。

必须确保生成的布局符合逻辑要求,即符合游戏规则,即只有路径长度为两个或更少的图案才会匹配。

初始化后,可以进入游戏模式。

②玩法:在玩家移动图块方面,可以通过鼠标点击或鼠标滑动来实现。

让用户通过鼠标移动的方式选择准确的两个块,并将它们连接在一起,消除所选的方块。

如果玩家选择的块不能组成一条可以消除的路径,则提示合法性错误。

必须持续地更新游戏板的状态以显示当前库存图案的可能匹配性。

如果没有合法的匹配,需要重新刷新图形或退出游戏。

③结束:当连连看游戏的图案消失时,游戏结束。

可以显示最后游戏得分和总时间,并允许玩家重新开始。

3.算法在创建游戏布局时,需要使用随机算法。

主要思路是为每个单元格生成随机数字,并将其相邻的分配给相邻的单元格。

使用蔓延的方法,依次在这个网格中移动,直到每个单元格都得到了分配的数字。

最后,这个矩阵头尾相接,生成一个关闭的形状。

基于java的连连看游戏设计

基于java的连连看游戏设计

毕业设计(论文)任务书注:本任务书要求一式两份,一份系部留存,一份报教务处实践教学科。

摘要游戏发展至今已经有30多年历史,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。

大部分的人一听到连连看游戏,通常就会想到这是一个小游戏。

连连看游戏,是指在一个区域内,分布着许多不同的图片,通过点击两张相同的图片并符合一定的规则消除它们的一个游戏。

我们最常见的是在QQ游戏大厅里的QQ连连看,网络上也有许多各式各样的单机版连连看游戏。

在游戏的过程中,可以考虑下如何使用自己掌握的程序去实现游戏的效果,并尝试去开发属于自己的连连看,这是一件十分惬意的事情。

在本章中,我们将详细的教大家如何使用Java去开发一款属于自己的单机连连看。

本游戏采用JAVA语言开发,以MyEclipse为开发平台。

游戏主界面是基于GUI(图形用户界面)的开发,使得游戏界面简单清晰。

并调用了其中的一些函数,完成了事件的触发功能。

希望通过这次开发设计出的连连看小游戏,给大家的生活带来一点乐趣。

游戏通过定义动态的二维数组,根据一定的算法实现规定的路径判断。

关键词:连连看、小游戏、JAVA、GUI、数组AbstractGame development has 30 years of history, in this short period, along with the hardware level, game development new technology emerge in an endless stream, classic games meet the eye everywhere. Most of the people hear Lianliankan game, they usually think this is a small game.Lianliankan game, refers to a region, the distribution of many different pictures, click through to two cards of the same picture and conform to certain rules to eliminate them in a game. It is most common in QQ game hall QQ Lianliankan, the network also has a lot of every kind of stand-alone edition game. In the course of the game, can consider how to use their mastery of the program to achieve game effects, and try to develop their own look again and again, this is a very happy thing. In this chapter, we will detail the teach you how to use Java to develop a belongs to ownstand-alone lianliankan.The game using JAVA language development, take MyEclipse as the development platform. The game 's interface is based on the GUI (graphical user interface ) development, which makes the game interface simple and clear. And call some of these functions, completed the event trigger function. Hope that through this design Lianliankan game, for everyone to bring to life a little fun.The game through the definition of the dynamic two-dimensional array, according to certain provisions of the path algorithm to determine.Key words: Lianliankan, game, JAVA, GUI, array目录摘要 .................................................................................................................................................................................. I V第一章绪论 ................................................................................................................................................................. - 1 -一游戏产业介绍 (1)二游戏的发展概况 (1)第二章连连看游戏描述 ............................................................................................................................................. - 2 -一游戏规则描述 (2)二游戏设计的目的 (2)三游戏可行性论证 (2)第三章连连看游戏的分析与设计 ............................................................................................................................. - 3 -一游戏的设计 (3)1 功能设计........................................................................................................................................................... - 3 -2 游戏模块设计................................................................................................................................................... -3 -3 算法模块........................................................................................................................................................... -4 -4 界面显示模块................................................................................................................................................... - 4 -5 菜单控制模块................................................................................................................................................... - 4 -6 地图设计........................................................................................................................................................... - 5 -7 算法设计......................................................................................................................................................... - 5 -8 类的设计........................................................................................................................................................... - 7 -1)Control.java 监听器类。

Java综合实验 连连看

Java综合实验 连连看

综合实验之连连看实验目的:(1)熟愁java图形用户界面的设计。

(2)学习java桌面程序的设计。

(3)学会灵活运用java组件。

(4)学习使用java进行算法实现。

案例分析:“连连看”是一种现在比较流行的小游戏,我们尝试编写了一个java版本的“连连看”游戏。

游戏的目标是把两张同样图案的牌找到并消除。

需要选择一对相同的图案连线,但此连线在避开其它图案后,呈现的路径应不超过两次转弯,如符合规定则消除此对图案。

每一局里玩家需要在规定的时间内消除所有的图案,当出现所有图案均无法连线时,游戏会自动打乱图案,即重新洗牌。

实现连线的规则如下:(1)两个目标是相同的。

(2)两个目标之间连接线的折点不超过两个(连接线由x轴和y轴的平行线组成)。

根据这个规则可以看出,要将两个相同的牌连接,一般分为如下3种情况:直线相连一个析点两个析点如图:通过示意图可以看出,如果有折点,每个折点必定有且至少有一个坐标(x或者y)是和其中一个目标点相同的,也就是说,折点必定在两个目标点所在的x 方向或y 方向的直线上。

那么通过平移其中一个目标点的x轴或者y轴,得到的一系列路径就是可能的消除路径。

检查这此路径上是否有其他的牌,如果没有其他的牌阻挡,就是一条通路,亦即这两个目标图案可以消除;如果检查了所有的可能的路径都没有这样的通路,则这两个图案之间就没有可以消除的路径另一个算法是随机生成盘面。

要保证所有的牌都能消除,就要求每种牌在盘面上都是偶数。

案例里面使用的算法是先随机生成一半的序列,拷贝这个序列到另一半,这样就能保证每种牌数目都是偶数,然后再打乱整个序列。

打乱序列的办法就是随机从序列中取两个位置,交换这两个位置的元素,交换操作执行的次数也是随机生成的。

程序设计:程序中主要的类:类图:Model类图:主要用户界面类图:CharIcon相差类图:辅助工具类图:(1)jcase.lianliankan.Model:盘面模型,整个游戏的主要算法都是在其中实现的。

基于java的连连看游戏研究

基于java的连连看游戏研究

基于java的连连看游戏研究摘要随着现代电脑电子技术的发展,游戏产业也随之应运而生并凭借着其别具一格的魅力成为当今大众的主要娱乐方式。

当然,随着开发技术的层出不穷,经典游戏比比皆是,“连连看”游戏就是其中之一。

本文介绍了基于java的连连看小游戏功能实现设计开发过程,其中着重介绍了路径判断和消除图片的实现算法。

“连连看”游戏虽然基础简单,但是通过对它的设计开发能为更高端游戏的开发积累经验并打下基础,以此来推动游戏行业的发展。

关键词连连看;小游戏;java1 概述1.1 游戏发展概况游戏连连看具有操作简单,操作简单的特点,可以让玩家放松身心,享受大多数玩家所喜爱的娱乐优势。

第一连连看以棋盘游戏的形式出现,经过不断的发展,现在它已经成为一种流行的社交游戏。

连连看随着Flash应用的普及,网上有各种各样的Flash版本“连连看”。

2008年,“连连看”被引入社交网络,如社交网络的普及和开放平台的兴起。

目前,开发者Jonevey在Manyou平台上推出的“宠物连连看”的盛行,也说明连连看已经成为一种新型的社交游戏,不但可以招待玩家,还可以增强玩家之间的交流沟通。

1.2 游戏规则及操作其大致规则为在一定时间内,玩家可以将两个相同的图案连接起来,连接不能多于三根直线,就可以将两个图案成功消除,如果规定时间内全部图案消除成功即为通关。

操作方面,第一次使用鼠标点击游戏界面中的图案,该图案此时为“被选中”以特殊方式显示;再次以鼠标点击其他图案,若该图案与被选中的图案相同,且把第一个图案到第二个图案连起来,中间的直线不超过3根,则消掉这一对图案,否则第一个图案变为未被选中状态,而第二张图案变成选中状态[1]。

2 游戲设计2.1 功能设计根据游戏规则,该游戏应满足如下功能:(1)开始游戏:在游戏界面中,当玩家点击“开始游戏”选项时,程序能够自动载入各种不同图案的图片并能够通过算法编写实现图片的随机排列。

然后程序确定图片图案,以此判断图片是否相同;记录相同图片坐标,判断图片能否相连相消。

基于Java的连连看游戏设计与实现毕业设计中期检查表

基于Java的连连看游戏设计与实现毕业设计中期检查表
指导教师意见游戏功能已经基本实现实现简单的关卡并进行了时间限定中期检查合格论文内容部分基本完成进行论文的格式修改和细节加工
大学
学生姓名
班级பைடு நூலகம்
指导教师
设计(论文)题目
基于Java的连连看游戏设计及实现








1.系统框架和主要功能涉及到的代码全部完成,项目可正常运行。
2.根据软件系统开发流程和相关规范,论文已完成近80%的内容。
签字:
年月日
注:学院、系、教研室应对毕业设计(论文)进行抽查,并给出具体意见。






1.检查源代码是否出现逻辑顺序错误。
2.检查布局是否合理。
3.必要时添加新组件。
指导教师意见
游戏功能已经基本实现,实现简单的关卡,并进行了时间限定,中期检查合格,论文内容部分基本完成,进行论文的格式修改和细节加工。基本符合任务书中的要求进度。
签字:
年月日
系或教研室意见
签字:
年月日
学院意见
3.项目基本功能已实现。
是否符合任务书要求进度








1.完善游戏界面,优化用户使用体验。
2.完善论文内容,使层次清晰明了,叙述流畅,规范排版。
能否按期完成设计
















1.在windowclassical风格下文本标签的文字不能正常显示。
2.计时器和“开始”按钮之间没有很好的关联,当进入游戏界面时,不点击“开始”按钮游戏会自动开始。

连连看游戏

连连看游戏

2020/2/12
8
本程序还可以在许多地方进行扩展, 地图的数量还可以增加,地图的类型也 可以不断改变,可以设置更多的道具, 不同地图配有不同的背景音乐等等。这 些功能可以把连连看游戏的娱乐性发展 到一个新的高度,这些功能都会在以后 的时间内进行不断改善。
2020/2/12
9
致谢

感谢程强老师,在毕业设计过程中,他对我的
连线将它们连接起来,便可以消除这对方块。 ⑷ 可以选择重列按钮重新排列图片,加速游戏进度。
2020/2/12
5
通过对以上功能的实现,达到界面美观,操作 简单,增加游戏的娱乐性、趣味性,使玩家对 此游戏产生兴趣。
2020/2/12
6
算法设计
1.游戏地图数据的设计 2.图案方块连接判断的设计 3.图案消除算法的设计
最后,也感谢评审论文的老师和答辩组老 师对我的帮助和鼓励,使我通过毕业设计学到 了更多的知识。
2020/2/12
11
2020/2/12
7
总结
这个程序完成的情况比较好,实现了预 期的所有功能,达到了目的。此连连看程序 运行起来比较稳定,不会在运行过程中出现 因系统原因造成的错误,界面比较美观,在 视觉上给予美的享受。操作非常简单,容易 上手。在算法问题上,处理的比较得体,不 会造成互相干扰,尤其是方块的消除算法, 做的比较详细、清晰,这也造成了代码量很 大,导致工作量很大。
毕业设计给予悉心的指导,从开题到系统设计,从
程序开发到论文的写作,纠正了我的许多不成熟的
想法,给我提出了许多建议,更在程序开发中遇到
的最困难的时候给予开导,给我继续完成设计的信
心。程老师严谨的作风和对我严格要求的态度。使
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于JAVA的《连连看》游戏一引言《连连看》游戏在网上种类非常多,比如《水果连连看》,《宠物连连看》等等,虽然版本各种各样,但是其基本玩法,或者说基本算法是相同的,就是显示一些图标,让用户依次去点击两个图标,如果这两个图标相同,并且这两个图标通过直线可以相连,或者通过直角相连,或者通过双折线相连就可以消掉,消掉所有图标即为胜利。

如图1所示:图1 正在进行中的连连看游戏通过该游戏的制作,我们可以对Java的基础语法、Java图形界面以及简单的算法设计有一个比较全面的了解。

二设计要求为了避免叙述的繁琐,我们只实现连连看游戏的基本功能,如下:●制作如图1所示的游戏界面,尽量做到美观大方,使用方便●当两个图标相同,且通过直线相连、直角相连、双折线相连时,能够消掉图标●能够让游戏随时暂停,然后继续当游戏进行到一定程度,无法消除剩余图标时,要能够提供重排功能对图标进行重排,从而让游戏继续进行三实现思路我们先讲一下程序中的几个难点,主要是说清楚具体的实现思路,具体的代码会在文后给出,大家可以参考。

1、界面设计需要实现如图2所示的界面:图 2 连连游戏界面整个界面分为三个区域:菜单区、功能区、游戏区。

首先在窗体上放置三个面板JPanel,分别存放三个区域,如图3所示:图3 界面的设计系统菜单区放置菜单即可,用户游戏区放置一个8*9的按钮数组来构成游戏界面,用户交互区放置开始,暂停等功能按钮以及提示信息。

2、生成游戏区运行程序后,游戏区并不显示按钮数组,当点击开始按钮后,再自动生成。

在生成按钮时要求按钮上的图案是随机的,且每个图案必须是偶数,否则会出现无法消除的按钮。

如何实现呢?我们可以这样考虑:假设有12个图片,把图片名字按照数字序号从0到11命名;假设游戏区共72个按钮,那么产生36个12以内的随机数字(每个随机数字代表一个图片),放入一个ArrayList中,最后使用ArrayList的addAll方法对已经产生的36个随机数字复制一份,这样就获得了72个随机数字,并且是成对的。

因为一个数字对应一个图片,所以72个按钮需要的图片就生成了。

代码如下:Random random = new Random();int imagenum = ROW * COL;for(int i=0; i<imagenum/2; i++){imageIndex.add(random.nextInt(12)+"");// 生成随机数索引放入集合}imageIndex.addAll(imageIndex);// 连接集合使每个索引都是成偶数的3、联通消除点击相连且图片相同的两个按钮可以把两个按钮消除掉。

相连有三种情况:直线相连,直角相连,双折线相连。

要消掉相同图标的按钮,首先要想办法判断两个按钮的图标是否相同,这里提示大家一个方法:按钮有个setActionCommand方法和getActionCommand,把图标名字设置为一个按钮的ActionCommand,然后通过对比两个按钮的ActionCommand就可以知道是否具有相同的图标。

消除按钮就要判断两个按钮是否连通,连通有三种情况,对应三种算法,下面详细说明。

算法判断两个点是否连通,那如何跟两个按钮建立联系呢?按钮的位置就可以视作一个点(java中用Point类表示一个点)。

这样用一个点代表按钮位置,用ActionCommand代表按钮上的图标。

就很容易操作了。

下面我们先说清楚实现原理,具体代码一会在给出。

(1)直线相连:只要两点之间横坐标或纵坐标相同,即表示两点在同行或同列;然后判断两点之间有没有障碍,无则联通。

(2)直角相连:两个点的坐标可以生成一个新的点,如果两点都可以与该新点联通,则说明联通。

注意:新点有两个,如图所示一个,另外喇叭图标处也可以生成一个,但是因为喇叭图标处不是空点,因此不用该点。

但在实际中,新点的两种可能都要考虑到,那个能用用那个。

(3)双折线相连:在单击的第一点处,向四个方向搜索有无空点,如果有则生成一个新点,如果该新点与另一个按钮联通(直角联通),则说明联通。

如果该新点不能与按钮连通,则继续向该新点的方向前进一个位置,再次判断该位置是否为空点,是否可以和另一个按钮连通,以此类推。

4、重排当游戏进行到一定程度,剩余的按钮无法消掉,这时就需要对按钮位置进行重新排列,从而让游戏继续进行。

解决这一问题的思路如下:首先对所有按钮进行搜索,把剩余按钮的ActionCommand(ActionCommand和该按钮显示的图片序号一致,如果按钮被消掉则ActionCommand为空)放入一个集合内;然后依次搜索剩余按钮,找到一个剩余按钮后,保持按钮的位置不动,从集合中随机取出一个ActionCommand赋给该按钮,这样就完成了对剩余按钮的重排。

四具体实现打开Eclipse,新建一个类LinkGame,该类继承自JFrame,并且需要实现ActionListener方法。

public class LinkGame extends JFrame implements ActionListener{}在该类中添加如下变量和方法,见表1和表2。

表1 LinkGame类中的成员变量变量类型变量名说明final static int ROW游戏区8行9列共72个按钮final static int COL表 2 LinkGame类中的方法上述方法的具体实现如下:1、构造方法// 构造方法建立游戏界面public LinkGame() {this.setSize(780, 500);this.setTitle("连连看游戏");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);addmyMenu(); // 添加菜单addFunctionPanel(); // 添加功能区this.setVisible(true);}2、菜单菜单的功能均没有实现,读者可以自行添加。

// 添加菜单public void addmyMenu() {JMenuBar menuBar = new JMenuBar();this.setJMenuBar(menuBar);JMenu menuGame = new JMenu("游戏");JMenu menuSet = new JMenu("设置");JMenu menuHelp = new JMenu("帮助");menuBar.add(menuGame);menuBar.add(menuSet);menuBar.add(menuHelp);menuGame.add(new JMenuItem("打开"));menuGame.add(new JMenuItem("保存"));menuGame.add(new JMenuItem("退出"));menuSet.add(new JCheckBoxMenuItem("音乐开关"));JMenu choice = new JMenu("难度选择");menuSet.add(choice);menuSet.add(new JMenuItem("背景色"));menuSet.add(new JMenuItem("提示"));menuHelp.add(new JMenuItem("关于", new ImageIcon("image/2.gif")));menuHelp.addSeparator();menuHelp.add(new JMenuItem("帮助"));ButtonGroup group = new ButtonGroup();JRadioButtonMenuItem rbm1 = new JRadioButtonMenuItem("初级难度");JRadioButtonMenuItem rbm2 = new JRadioButtonMenuItem("中级难度");JRadioButtonMenuItem rbm3 = new JRadioButtonMenuItem("高级难度");group.add(rbm1);group.add(rbm2);group.add(rbm3);choice.add(rbm1);choice.add(rbm2);choice.add(rbm3);}3、功能区和游戏区的界面// 添加功能区public void addFunctionPanel() {start.setPreferredSize(new Dimension(150, 50));pause.setPreferredSize(new Dimension(150, 50));conti.setPreferredSize(new Dimension(150, 50));hint.setPreferredSize(new Dimension(150, 50));timecount.setPreferredSize(new Dimension(150, 50));timestr.setPreferredSize(new Dimension(150,50));timestr.setFont(new Font("隶书",Font.BOLD,28));timecount.setFont(new Font("隶书",Font.BOLD,28));timecount.setForeground(Color.yellow);timestr.setForeground(Color.yellow);start.addActionListener(this);pause.addActionListener(this);conti.addActionListener(this);hint.addActionListener(this);functionPanel.setPreferredSize(new Dimension(200, 500));functionPanel.setBackground(Color.BLUE);functionPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 20));functionPanel.add(timestr);functionPanel.add(timecount);functionPanel.add(start);functionPanel.add(pause);functionPanel.add(conti);functionPanel.add(hint);this.add(functionPanel, BorderLayout.EAST);}// 添加游戏区public void addGamePanel() {gamePanel.setPreferredSize(new Dimension(580, 500));gamePanel.setLayout(new GridLayout(ROW, COL));gamePanel.setBackground(Color.RED);Random random = new Random();int imagenum = ROW * COL;for(int i=0; i<imagenum/2; i++){imageIndex.add(random.nextInt(12)+"");// 生成随机数索引放入集合}imageIndex.addAll(imageIndex);// 连接集合使每个索引都是成偶数的int num=0; //记录从集合中取出的图标做引数for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {String newNumber = imageIndex.get(num++);dots[i][j] = new JButton("", new ImageIcon("image/" + newNumber+ ".png"));dots[i][j].addActionListener(new ButtonEvents()); // 事件监听注册dots[i][j].setActionCommand(newNumber); // 设置按钮的actioncommand名gamePanel.add(dots[i][j]);}}this.add(gamePanel, BorderLayout.WEST);}4、单击游戏区按钮激发的事件// 事件类,监听按钮单击事件private class ButtonEvents implements ActionListener {public void actionPerformed(ActionEvent e) {count++;for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {if (e.getSource() == dots[i][j]) {Point p = new Point(i, j); // 单击按钮则把按钮位置封入p中list.add(p); // 点p放入集合list中}}}if (count % 2 == 0) { // 如果是偶数次单击按钮p1 = list.getFirst(); // 从集合中取出代表两个按钮的点p2 = list.getLast();// 如果两次点击的是同一个按钮if(p1.x == p2.x && p1.y == p2.y){list.clear();return;}// 这两个点是否可以消掉if(lineCheck(p1, p2) || secendLine(p1, p2) || triLine(p1, p2)) {dots[p1.x][p1.y].setVisible(false);dots[p2.x][p2.y].setVisible(false);dots[p1.x][p1.y].setActionCommand("");dots[p2.x][p2.y].setActionCommand("");}list.clear(); // 清空集合count = 0;}}}5、判断两个按钮相连的三种算法// 是否直线联通public boolean lineCheck(Point p1, Point p2) {int absDistance = 0; // 两点之间的距离int spaceCount = 0; // 两点之间空按钮的数量// 如果两个按钮的图标不相同if (!dots[p1.x][p1.y].getActionCommand().equals(dots[p2.x][p2.y].getActionCommand())) {return false;}if (p1.x == p2.x || p1.y == p2.y) {if (p1.x == p2.x && p1.y != p2.y) {// 绝对距离(中间隔着的空格数)absDistance = Math.abs(p1.y - p2.y) - 1;// 正负值int zf = (p1.y - p2.y) > 0 ? -1 : 1;for (int i = 1; i <= absDistance; i++) {if (dots[p1.x][p1.y + i *zf].getActionCommand().equals("")) {// 空格数加1spaceCount += 1;} elsebreak;// 遇到阻碍就不用再探测了}} else if (p1.y == p2.y && p1.x != p2.x) {absDistance = Math.abs(p1.x - p2.x) - 1;int zf = (p1.x - p2.x) > 0 ? -1 : 1;for (int i = 1; i <= absDistance; i++) {if (dots[p1.x + i *zf][p1.y].getActionCommand().equals("")) {spaceCount += 1;} elsebreak;}}if (spaceCount == absDistance) {// 可联通return true;} else {return false;}} else {// 不是同行同列的情况所以直接返回false;return false;}}// 是否直角联通public boolean secendLine(Point p1, Point p2) {// 第一个直角检查点,如果这里为空则赋予相同值供检查Point checkP1 = new Point(p1.x, p2.y);// 第二个直角检查点,如果这里为空则赋予相同值供检查Point checkP2 = new Point(p2.x, p1.y);// 第一个直角点检测if (dots[checkP1.x][checkP1.y].getActionCommand().equals("")) { dots[checkP1.x][checkP1.y].setActionCommand(dots[p1.x][p1.y].getActionCommand());if (this.lineCheck(p1, checkP1) && this.lineCheck(checkP1, p2)) { dots[checkP1.x][checkP1.y].setActionCommand("");return true;dots[checkP1.x][checkP1.y].setActionCommand("");}}// 第二个直角点检测if (dots[checkP2.x][checkP2.y].getActionCommand().equals("")) { dots[checkP2.x][checkP2.y].setActionCommand(dots[p2.x][p2.y].getActionCommand());if (this.lineCheck(p1, checkP2) && this.lineCheck(checkP2, p2)) { dots[checkP2.x][checkP2.y].setActionCommand("");return true;} else {dots[checkP2.x][checkP2.y].setActionCommand("");}}return false;}// 是否双折线联通public boolean triLine(Point p1, Point p2) {int i;Point checkP = new Point(p1.x, p1.y);// 四向探测开始for (i = 4 - 1; i >= 0; i--) {checkP.x = p1.x;checkP.y = p1.y;// 向右if (i == 3) {while ((++checkP.x < dots.length)&&dots[checkP.x][checkP.y].getActionCommand().equals("")) {dots[checkP.x][checkP.y].setActionCommand(dots[p1.x][p1.y].getActionCommand());if (secendLine(checkP, p2)) {dots[checkP.x][checkP.y].setActionCommand("");return true;} else {dots[checkP.x][checkP.y].setActionCommand("");}}// 向下else if (i == 2) {while ((++checkP.y < dots[checkP.x].length)&&dots[checkP.x][checkP.y].getActionCommand().equals("")) {dots[checkP.x][checkP.y].setActionCommand(dots[p1.x][p1.y].getActionCommand());if (secendLine(checkP, p2)) {dots[checkP.x][checkP.y].setActionCommand("");return true;} else {dots[checkP.x][checkP.y].setActionCommand("");}}}// 向左else if (i == 1) {while ((--checkP.x >= 0)&&dots[checkP.x][checkP.y].getActionCommand().equals("")) {dots[checkP.x][checkP.y].setActionCommand(dots[p1.x][p1.y].getActionCommand());if (secendLine(checkP, p2)) {dots[checkP.x][checkP.y].setActionCommand("");return true;} else {dots[checkP.x][checkP.y].setActionCommand("");}}}// 向上else if (i == 0) {while ((--checkP.y >= 0)&&dots[checkP.x][checkP.y].getActionCommand().equals("")) {dots[checkP.x][checkP.y].setActionCommand(dots[p1.x][p1.y].getActionCommand());if (secendLine(checkP, p2)) {dots[checkP.x][checkP.y].setActionCommand("");return true;} else {dots[checkP.x][checkP.y].setActionCommand("");}}}}// 四个方向寻完都没找到可行的checkP点,所以只好返回falsereturn false;}6、重排功能// 当剩余按钮无法消除时进行重排public void reSet(){for(int i=0; i<ROW; i++){for(int j=0; j<COL; j++){if(!dots[i][j].getActionCommand().equals("")){linklist.add(dots[i][j].getActionCommand());}}}Random rd = new Random();for(int i=0; i<ROW; i++){for(int j=0; j<COL; j++){if(!dots[i][j].getActionCommand().equals("")){int c = rd.nextInt(linklist.size());dots[i][j].setIcon(newImageIcon("image/"+linklist.get(c)+".png"));dots[i][j].setActionCommand(linklist.get(c));linklist.remove(c);}}}}7、功能区按钮的实现// 功能区按钮被单击时public void actionPerformed(ActionEvent e) { if(e.getSource() == start){gamePanel.removeAll();addGamePanel(); // 添加游戏区reSet();timer.start();}else if(e.getSource() == pause){gamePanel.setVisible(false);timer.stop();}else if(e.getSource() == conti){gamePanel.setVisible(true);timer.start();}else if(e.getSource() == hint){reSet();}timecount.setText(time--+"秒");}最后,加上主方法即可,如下:public static void main(String[] args) {new LinkGame();// 匿名对象}此时,运行程序,就可以进行连连看游戏了。

相关文档
最新文档