JAVA 连连看 源代码行行注释

合集下载

连连看原理

连连看原理

用 JAVA 开发游戏连连看其实不管是做软件也好,做游戏也好,只要是写程序,在动手之前是一定会存在需求和分析的,如果不经过一定的分析就开始动手写程序,那么,这个程序一定会很难写下去的,最后的结果可能会导致放弃。

那么,在我们动手之前,让我们先简单的分析一下吧。

由于“连连看”并不是一个我们凭空开发的游戏,并且网上也已经有很多别人已经开发好的版本,因此,对于我们来说,我们已经拥有了一个很好的原型(比如说 QQ 游戏中的“连连看”),分析起来也应该是轻松得多。

由于 QQ 中的“连连看”是网络版,为了开发上的简便,我们先放弃网络功能,做一个简单的单机版就行了。

现在,让我们现在来看一看 QQ 中的连连看吧。

“连连看”的游戏规则其实并不复杂,首先,游戏开始的时候,地图上会有由数张不同的图片随机分散在地图上(并且每张图片会出现偶数次,通常是 4 次),只需要在地图上找出两张相同的图片(点),并且这两个点之前可以用不超过 3 条的直线连接起来就可以消除这两点,如此下去,直到地图上的点全部消除完就算游戏结束,怎么样,规则很简单吧?:)我们的开发就完全按照些规则来吧。

分析游戏规则找出算法通过上面的分析,我们已经知道了游戏规则,可是,我们怎么样去实现呢?其实所谓的实现也就是算法,那我们怎么样找出算法呢?别急,让我们来看一看上图,或者自己动手玩一玩别人做好的。

通过对上图的观察,我们发现,可以将游戏中的地图看作是一个二维数组,其中的所有图片(以下称“点”)可以看作是数组中的一个具体的元素。

那么,游戏中相同的图片可以看作是数组中不同位置两个值相同的元素。

至于直线,让我们给组数中的每一个元素赋一个特殊的值如 0 ,以表示地图上空白的位置。

并且同时规定:当连续的具有该特殊值的点的横向索引或纵向索引相同时,可以认为这是一条直线,比如下图:当数组中两点的值相同并且两点间只需要不超过 3 根直线能连接起来的时候,就让这两点的值变为 0 ,如果数组中全是 0 值的点,就认为游戏已经结束:)怎么样,算法够简单了吧:)用伪代码来描述程序的结构现在,我们用伪代码来描述一下游戏,假设用户开始了游戏:消除两点;上次选择的点 = null ;if ( 地图上已没有可消除的点 ) { 游戏结束;}}else {上次选择的点 = 当前点;}}else {上次选择的点 = 当前点;}}游戏结束;看看有没有什么问题?如果没有问题,我们进入下一步吧:)确定程序需要的模块当伪代码完成后,并且在我们的大脑里转了几圈发现没有问题后,现在就可以开始进行模块的划分工作了。

连连看源代码

连连看源代码

摘要:近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。

Java语言的学习热潮并没有因为时间的推移而消退,相反,由于计算机技术的发展所带来的新应用的出现,Java越来越流行,这种情况是以往程序设计语言在其生存周期内所不多见的。

Java语言之所以这样长盛不衰,一是因为其众多的技术特点与现今的应用十分合拍,可以覆盖大部分的需求;二是因为SUN公司不断推出新的版本,完善Java自身的功能。

有了这两点,Java语言成为程序员首选的程序设计开发工具就在情理之中了.连连看来源于街机游戏《四川麻将》和《中国龙》,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。

饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。

之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。

连连看游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。

关键字:发展,java,连连看,程序设计;1.课程设计介绍课题设计的目的:1) 进一步加深对Java语言的理解和掌握;将所学的JAVA知识运用于实践中。

2) 课程设计将理论与实践相结合,提供了一个既动手又动脑,独立实践的机会,锻炼我们的分析解决;实际问题的能力,提高学生适应实际,实践编程的能力。

3)熟练掌握JAVA语言中图形用户界面程序的编写;4)大体了解怎样用JAVA来编写小游戏的,增强我们实践能力和创新精神的综合培养。

课程设计的要求:由于Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。

面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承学会java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。

java 常见注解

java 常见注解

java 常见注解Java 中的注解(Annotation)是一种代码标记机制,用于为代码添加元数据。

这些元数据可以在编译时或运行时被处理,用于生成代码、控制程序的运行逻辑或进行其他操作。

Java 提供了一些内置的注解,也支持自定义注解。

以下是一些常见的Java 注解:1.@Override: 用于指示一个方法是重写了父类中的方法。

如果被标记的方法并没有在父类中对应的方法,编译器会报错。

2.@Deprecated: 用于标记一个已过时的方法或类。

编译器会检查是否使用了过时的元素,并给出警告。

3.@SuppressWarnings: 用于抑制编译器警告。

4.@SafeVarargs: 用于声明一个泛型数组或可变参数的方法是类型安全的。

5.@FunctionalInterface: 用于标记一个接口是函数式接口,即该接口只包含一个抽象方法的接口。

6.@NotNull: 用于标注一个参数或返回值不是null。

7.@Nullable: 用于标注一个参数或返回值可以为null。

8.@CheckForNull: 用于检查一个值是否为null。

9.@Tested: 用于标记一个类或方法已经进行了测试。

10.@RunWith(Suite.class)和@Suite: 用于定义一个测试套件,将多个测试类组合在一起执行。

11.@ContextConfiguration: 用于加载Spring 配置文件。

12.@Autowired, @Resource, @Qualifier: 用于Spring 中的依赖注入。

13.@PostConstruct和@PreDestroy: 用于标记在构造函数之后和析构函数之前执行的方法。

14.@Transactional: 用于声明一个方法或类需要进行事务管理。

15.@Component, @Service, @Repository, @Controller: 用于标记Spring 中的组件,分别表示业务逻辑层、数据访问层、数据持久化层和表现层组件。

java 链式写法注解

java 链式写法注解

Java 链式写法通常是通过在方法返回值上调用另一个方法来实现的。

这种写法可以让代码更加简洁、易读和易于维护。

下面是一个使用注解的Java 链式写法的示例:```javapublic class Person {private String name;private int age;private String address;@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", address='" + address + '\'' +'}';}public Person setName(String name) { = name;return this;}public Person setAge(int age) {this.age = age;return this;}public Person setAddress(String address) {this.address = address;return this;}}```在上面的代码中,我们定义了一个Person 类,并使用了链式写法的set 方法来设置属性值。

在每个set 方法中,我们返回当前对象的实例,以便可以在同一个对象上进行多个设置。

同时,我们还使用了注解@Override 来覆盖了toString 方法,以便在打印对象时能够以更友好的方式显示属性值。

连连看游戏编程教程

连连看游戏编程教程

连连看游戏编程教程连连看游戏是一款经典的益智类游戏,其独特的游戏规则让玩家们在娱乐的同时提高了思维能力和反应速度。

本篇文章将为大家介绍如何使用Python语言编写一个简单的连连看游戏。

一、游戏规则的设计在开始编写代码之前,我们需要先设计游戏规则。

连连看游戏的目标是通过消除相同图标的配对来清空游戏界面上的所有方块。

具体的游戏规则如下:1. 游戏界面是一个矩阵,每个方块上都有一个图标。

2. 玩家需要通过连接相同图标的路径来消除方块。

路径只能在水平和垂直方向上进行连接,不能有其他方块阻挡。

3. 每次消除相同图标的方块会得到一定的分数,随着游戏的进行,剩余方块的数量会减少。

4. 游戏会根据玩家的分数和剩余方块数量进行评分和排名。

二、游戏界面的设计在编写代码之前,我们需要使用Python中的图形库创建游戏界面。

这里我们推荐使用Pygame库,它是一款功能强大且易于上手的游戏开发库。

首先,我们需要创建一个窗口以及游戏界面的矩阵。

可以使用Pygame库提供的Surface对象来创建窗口,并使用二维列表来表示游戏界面的矩阵。

接下来,我们需要在窗口中绘制游戏界面的方块和图标。

可以使用Pygame库提供的绘制函数来实现,通过循环遍历游戏界面的矩阵,根据方块的状态来选择绘制的图标。

可以使用不同的颜色或者图片来表示不同的图标。

三、游戏逻辑的设计游戏逻辑是编写连连看游戏的核心部分。

主要包括方块的生成、方块的选择和判断是否可以连接的函数。

首先,在游戏开始时,需要生成随机的方块,并将其放置在游戏界面的矩阵中。

然后,需要实现方块的选择函数,玩家可以通过鼠标点击方块来选择两个需要连接的方块。

可以使用Pygame库提供的事件监听函数来实现。

接下来,需要实现判断两个方块是否可以连接的函数。

主要通过判断两个方块之间是否有可连通的路径来判断它们是否可以连接。

可以使用BFS或DFS等搜索算法来实现。

最后,在两个方块成功连接后,需要将它们从游戏界面的矩阵中移除,并计算玩家得分。

JAVA代码注释规范

JAVA代码注释规范

JAVA代码注释规范目录JA V A代码注释规范 (1)注释的原则 (1)注释的简洁 (1)注释的一致性 (1)注释的位置 (2)注释的数量 (2)删除无用注释 (2)复杂的注释 (2)多余的注释 (2)必加的注释 (3)JA V A注释技巧 (3)JA V A注释具体实现 (4)源文件注释 (4)类(模块)注释: (5)接口注释: (5)构造函数注释: (6)方法注释: (6)方法内部注释: (7)全局变量注释: (7)局部(中间)变量注释: (7)常量 (7)p.s. 注释使用统一的注释文件 (8)注释的原则注释形式统一在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。

如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范。

注释的简洁内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。

注释的一致性在写代码之前或者边写代码边写注释,因为以后很可能没有时间来这样做。

另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。

通常描述性注释先于代码创建,解释性注释在开发过程中创建,提示性注释在代码完成之后创建。

修改代码的同时修改相应的注释,以保证代码与注释的同步。

注释的位置保证注释与其描述的代码相邻,即注释的就近原则。

对代码的注释应放在其上方相邻或右方的位置,不可放在下方。

避免在代码行的末尾添加注释;行尾注释使代码更难阅读。

不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释要对齐。

注释的数量注释必不可少,但也不应过多,在实际的代码规范中,要求注释占程序代码的比例达到20%左右。

注释是对代码的“提示”,而不是文档,程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱,注释的花样要少。

不要被动的为写注释而写注释。

删除无用注释在代码交付或部署发布之前,必须删掉临时的或无关的注释,以避免在日后的维护工作中产生混乱。

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编程中,注释是一种给代码添加说明和解释的方式。

在编写类和方法时,为了方便阅读和理解代码,通常需要添加类注释和方法注释。

本文将介绍如何在Java中获取类注释和方法注释的方法。

二、获取类注释1. 使用反射机制在Java中,可以使用反射机制来获取类的注释信息。

通过反射可以获取类的所有信息,包括注释。

下面是一个简单的示例:```javaClass clazz = Class.forName(.example.TestClass");String classComment =clazz.getCanonicalName().getClass().getAnnotation(Comment.cl ass).value();System.out.println("类注释:" + classComment);```2. 使用工具类除了使用反射机制,还可以使用一些Java类库提供的工具类来获取类的注释。

可以使用Apache Commons Lang库中的ClassUtils类来获取类的注释:```javaString classComment =ClassUtils.getShortClassName(TestClass.class) + " - " + ClassUtils.getPackageCanonicalName(TestClass.class); System.out.println("类注释:" + classComment);```三、获取方法注释1. 使用反射机制和获取类注释类似,使用反射机制也可以获取方法的注释信息。

下面是一个简单的示例:```javaClass clazz = Class.forName(.example.TestClass");Method[] methods = clazz.getDeclaredMethods();for (Method method : methods) {if (method.isAnnotationPresent(Comment.class)) {String methodComment =method.getAnnotation(Comment.class).value();System.out.println("方法注释:" + methodComment);}}```2. 使用工具类同样地,可以使用一些Java类库提供的工具类来获取方法的注释。

java 注释标准

java 注释标准

java 注释标准在Java开发中,注释被广泛应用于代码的编写与维护过程中。

通过注释,开发人员可以为自己的代码添加解释说明,方便其他开发人员理解和使用代码。

本文将介绍Java中常用的注释标准,以及它们的使用方法与注意事项。

一、单行注释单行注释以"//"开头,用于对单行代码进行解释说明。

它可以出现在代码的任何位置,对该行代码进行注释,不会影响代码的执行。

例如:```javaint x = 10; // 定义一个整型变量x,初始值为10二、多行注释多行注释以"/*"开头,以"*/"结尾,用于对多行代码进行注释。

多行注释常用于对函数、类或一段代码的功能进行描述。

例如:```java/** 计算两个整数的和* @param a 整数1* @param b 整数2* @return 两个整数的和*/public int add(int a, int b) {return a + b;}三、文档注释文档注释以"/**"开头,以"*/"结尾,用于对类、接口、方法、字段等进行详细的描述。

文档注释是Java API文档的一部分,在生成API 文档时会被提取出来。

例如:```java/*** 学生类*/public class Student {/*** 学生姓名*/private String name;/*** 获取学生姓名* @return 学生姓名*/public String getName() {return name;}/*** 设置学生姓名* @param name 学生姓名*/public void setName(String name) { = name;}}四、注释的使用方法与注意事项1. 注释应该简洁明了,使用清晰的语言描述代码的功能、用途、参数、返回值等信息,以便其他开发人员理解和使用。

2. 注释应该与代码保持同步更新,避免注释与代码不一致的情况发生。

java小游戏连连看源代码

java小游戏连连看源代码

Java小游戏——连连看源码连连看java源代码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; //分别记录两次被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){mainFrame=new JFrame("JKJ连连看");thisContainer = mainFrame.getContentPane();thisContainer.setLayout(new BorderLayout());centerPanel=new JPanel();southPanel=new JPanel();northPanel=new JPanel();thisContainer.add(centerPanel,"Center");thisContainer.add(southPanel,"South");thisContainer.add(northPanel,"North");centerPanel.setLayout(new GridLayout(6,5));for(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}exitButton=new JButton("退出");exitButton.addActionListener(this);resetButton=new JButton("重列");resetButton.addActionListener(this);newlyButton=new JButton("再来一局");newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()))); northPanel.add(fractionLable);mainFrame.setBounds(280,100,500,450);mainFrame.setVisible(true);}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(Math.random()*25+1);for(int alike=1;alike<=2;alike++) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100)); }public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if(this.grid[i][j]!=0) {save[n]=this.grid[i][j];n++;}}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz) {if(pressInformation==false) {x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg。

基于“连连看”实例的Java程序设计课程教学研究

基于“连连看”实例的Java程序设计课程教学研究

基 于实例 的教学是 近年来讨论 比较 多的话题 。 本文将结合 程序 设计课 程教学 实际 ,探讨如何将程序 实 例引入 到课 堂 ,让 学生更 好 的学 习面 向对象程 序设 计 这 门课 程 。 由于J a v a 语 言与 生俱来 的 “ 面 向对 象 ” 的特 点 ,众 多 高校 选 择 其作 为 面 向对 象 程 序设 计 课
构造出一个 1 1 1 9 的G r i d L a y o u t 布 局 ,而后在每个单元
格 中放人一个J B u t t o n  ̄ 的对象 ,代表贴砖对象 。这样 ,

通俗易懂 ,且能激发学生 的课堂兴趣。考 虑到学生通常 对小游戏存在兴趣 ,本文引入 了较为普及 的小游戏 “ 连 连看” ,通过该游戏 的设计 ,来探 索面向对象程序设计
码 ,从语法 的角度说明如何使用而 已,并不能给学生更 多的直观感受 。在 “ 连连看 ”实例 中,主界面 区域显然
二、 “ 连连 看 "实例 设计 与教 学
为 了能够 达到 教学效 果 ,实例 的选取需 要适 当斟
酌 。实例的选择 不仅要能够满足基本的教学需要 ,更要
可以看成是 一种典 型的G r i d L a y o u t 布局应用。我们 可以
程 教学 的编程 语言 。本文 的实 例亦建 立在J a v a 平 台之


与设计过程 。
B)当进行 可视化 程序设计 的时候 ,界面布局是无
法 回避的问题 。现在几乎所有 的教材在描述这个问题的
时候 ,通常只是 简要地罗列 出J a v a 平 台下的几种布局 , 诸 ̄ H F l o wL a y o u t 、B o r d e r L a y o u t 等 ,然后给出一小段代

JAVA开发连连看游戏

JAVA开发连连看游戏

1 引言1.1 连连看游戏发展[1]游戏“连连看”顾名思义就是找出相关联的东西,连连看游戏在网上基本是用于小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。

“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。

在电脑普及发展的今天,网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。

连连看游戏就是典型,因此不管走到哪个网页游戏网站,连连看游戏总是排在受玩家欢迎排名的前3位,休闲、趣味、益智是连连看玩不厌的精华,且不分男女老少、工薪白领,是一款适合大众的经典网络、单机休闲小游戏。

1.1.1 桌面连连看游戏发展游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。

这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。

并于2004年,取得了国家版权局的计算机软件著作权登记证书。

1.1.2 在线连连看游戏发展随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。

如“水晶连连看”、“果蔬连连看”、“石头连连看”等。

1.1.3 社交连连看游戏发展2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。

“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。

1.2 连连看游戏介绍当今社会休闲型游戏越来越得到人们的喜爱,连连看游戏是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不高,娱乐性强,易于上手,因此吸引了一大批玩家,且不分男女老少、工薪白领,是一款适合大众的经典网络、单机休闲小游戏。

1.2.1 连连看游戏基本规则如果两个相同的图案之间如果能画出一条不多于2折的连线,则消除这两个图案,直到所有的图案全部消除为止,这就是连连看。

连连看小游戏设计毕业设计

连连看小游戏设计毕业设计

摘要游戏“连连看”,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除,规则简单容易上手。

这个程序的界面使用Jframe框架,主程序窗口包含一个主面板,其中包含两个子面板,左边一层子面板是游戏窗口,符合我们玩游戏的习惯,包含连连看游戏的图片元素,用户进行游戏能找到32对图片;右边一层用来实现游戏控制,有开始、刷新、选择难度、显示分数、进度条等功能选项。

结合Java 编程语言的简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程、动态和连连看游戏的休闲、趣味、益智加上美观的界面设计和秀色可餐的水果蔬菜游戏图片元素,使这款连连看游戏成为现代都市人们打发无聊,放松身心的好帮手。

加入了游戏时间控制和过关控制及进度条提示功能使游戏速度节奏快,画面清晰可爱,老少皆宜。

通过ActionEvent 组件进行动作事件的监听和处理。

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

关键字: Java连连看;Jframe;数组;路径判断AbstractThe game "lianliankan", as long as the two cards with the same suit straight up to three connected can be eliminated, rules are easy. This program of interface using Jframe framework, main program window contains a a main panel, which contains two a child Panel, left a layer child Panel is game window, meet we playing game of habits, contains fest see game of pictures element, user for game can found 32 on pictures; right a layer used to achieved game control, has began, and refresh, and select difficulty, and displayed score, and progress article, features option. Combines a simple Java programming language, object-oriented, distributed, interpreted, robust, secure system-independent, portable, high-performance, multithreaded, dynamic and lianliankan games, leisure, fun, puzzle together with attractive interface design and appetizing fruit vegetables picture elements, makes this lianliankan games become the modern city spending tedious, relaxed and good help. Joined the playing time control and border control and progress bar prompts make the game faster tempo, clear picture and lovely, both young and old. Action through the ActionEvent component event listening and handling. Games by defining an array according to certain algorithms provide path of judgment.Key words: Java Lianliankan ; Jframe ; array ; approaches目录1.引言 (1)2.游戏规则 (1)2.1概要 (1)2.2操作 (1)2.3胜利条件 (1)2.4失败条件 (1)3.发展概况 (1)3.1连连看游戏的历史 (1)3.2用java语言写连连看游戏的原因 (2)4.方案论证 (2)4.1设计原理 (2)4.2方案选择 (3)4.3主要问题 (3)4.4技术要求 (3)4.5游戏应用环境的构建 (4)5.系统分析 (4)5.1模块分析 (4)5.1.1 界面的设计和图片的随机生成模块 (5)5.1.2 菜单控制模块 (5)5.1.3算法模块 (5)5.2基本思路 (6)5.2.1 游戏地图设计思路 (6)5.2.2 连连看游戏图片 (6)5.2.3 获取图片位置 (6)5.2.4 路径判断思路 (7)6.系统设计 (8)6.1主界面的设计 (8)6.2图片的随机生成 (9)6.3单击控件的事件触发 (9)6.3.1开始游戏按钮 (9)6.3.2重列按钮 (10)6.3.3难度选择按钮 (10)6.4清除两个一样的符合条件的方块 (10)6.5过关设置 (10)7.结果分析 (11)7.1优点 (11)7.2缺点 (11)8.总结 (11)参考文献 (13)致谢 (14)1.引言网络小游戏、网页游戏越来越受网民欢迎,除了玩的方法简单外(不像其他游戏还需要注册下载繁琐过程),很多游戏不乏经典。

Java连连看程序代码

Java连连看程序代码
Button b26,b27,b28,b29,b30,bc;
Button p1,p2,br,bt1,bt2; //p1、p2为选定的按钮
Panel panel1,panel2;
int d[][]={ //用来和界面的按钮建立映射关系
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
public static void main(String[] args)
panel1.add(b7); panel1.add(b8); panel1.add(b9);
panel1.add(b10); panel1.add(b11); panel1.add(b12);
panel1.add(b13); panel1.add(b14); panel1.add(b15);
b4=new Button(String.valueOf(d[1][4]));
b5=new Button(String.valueOf(d[1][5]));
b6=new Button(String.valueOf(d[2][1]));
b7=new Button(String.valueOf(d[2][2]));
{0,0,0,0,0,0,0}
};
this.d=d;
suiji(); //调用随机函数,产生随机数;
f.setVisible(false);

连连看小游戏编程实现

连连看小游戏编程实现

连连看小游戏编程实现连连看是一种非常经典的益智游戏,通过连接相同图案的方块来消除它们,最终目标是将所有方块都消除完毕。

本文将介绍如何使用编程语言实现一个简单的连连看小游戏。

1. 游戏规则连连看游戏的规则非常简单,玩家需要找到两个相同图案的方块,且它们之间的连线不能超过两个弯角。

当玩家成功连接一对相同的方块时,这对方块将会消失,同时玩家获得一定的分数。

玩家需要尽可能快地消除所有方块,以获取更高的分数。

2. 游戏界面设计在编程实现连连看游戏时,我们需要设计一个美观且易于操作的游戏界面。

可以使用图形库来实现游戏界面的绘制,比如Python的Tkinter库或者C++的SFML库。

游戏界面需要包括以下几个组件:a. 方块区域:用于显示游戏的方块布局,可以使用矩阵形式表示,每个元素表示一个方块。

b. 分数显示区域:用于显示玩家当前的得分情况。

c. 时间显示区域:显示剩余的游戏时间。

d. 游戏操作按钮:如开始游戏按钮、重新开始按钮等。

3. 方块生成在游戏开始时,需要生成一定数量的方块,并将它们随机地分布在方块区域内。

可以使用随机数生成算法来实现方块的随机生成,同时需要保证每种方块的数量相等。

4. 连接算法玩家通过点击两个相邻且相同的方块来进行消除。

为了判断两个方块是否可以相连,我们需要实现一个连线算法。

一种简单的实现方法是使用深度优先搜索算法(DFS)来寻找两个方块之间的路径。

通过遍历方块区域,查找与当前选中方块相同的邻居方块,然后递归搜索相邻方块的邻居,直到找到目标方块或者无法继续搜索为止。

5. 方块消除当玩家成功连接一对相同的方块时,需要将它们从方块区域中移除,并更新玩家的得分。

可以使用图形库提供的绘制函数来实现方块的消除效果,比如渐渐消失或者爆炸效果等。

6. 游戏结束当所有方块都被消除或者游戏时间结束时,游戏结束。

此时可以显示玩家的最终得分,并提供重新开始或退出游戏的选项。

通过以上步骤,我们可以使用编程语言实现一个简单的连连看小游戏。

简述java中注释的用法

简述java中注释的用法

简述java中注释的用法在Java中,注释是一种特殊的代码形式,用于对代码进行解释、说明、调试或达到文档化的目的,可以帮助开发人员理解代码、提高代码的可读性和可维护性。

Java中的注释主要有三种类型:单行注释、多行注释和文档注释。

1. 单行注释:单行注释以"//"开头,用于在一行中注释单个语句或表达式。

它可以用于解释代码的目的、功能、用法等。

单行注释在编译时会被忽略,不会被编译器所处理。

示例:// 这是一个示例的单行注释2. 多行注释:多行注释以"/*"开头,以"*/"结尾,可以用于注释多条语句或一整个方法,甚至可以用于注释包或类的定义。

多行注释在编译时同样会被编译器忽略。

示例:/*这是一个示例的多行注释可以用于注释多条语句和一整个方法*/3. 文档注释:文档注释是一种特殊的注释形式,以"/**"开头,以"*/"结尾。

它可以用于生成代码的文档,提供给开发者或其他使用者阅读、学习或使用。

文档注释可以包含标签,用于指定注释的目标对象、参数、返回值、异常等信息。

示例:/*** 这是一个示例的文档注释* 可以提供代码的说明、用法示例等信息*/在注释中使用标签可以进一步明确注释的目的和内容。

常用的注释标签有:- @param:用于标记参数的说明,指定参数的名称和描述。

- @return:用于标记方法的返回值说明。

- @throws:用于标记可能抛出的异常类型和说明。

- @deprecated:用于标记已过时的方法或类。

- @see:用于引用其他类、方法或字段的文档链接。

示例:/*** 计算两个数的和** @param a 第一个被加数* @param b 第二个被加数* @return 两个数的和* @throws IllegalArgumentException 如果参数为负数* @deprecated 该方法已被弃用,请使用新的add方法* @see Math#add(int, int)*/public int sum(int a, int b) {if (a < 0 || b < 0) {throw new IllegalArgumentException("参数不能为负数");}return a + b;}通过使用文档注释和注释标签,可以生成代码的文档,并且可以使用工具来提取这些注释并生成HTML、CHM等格式的文档。

java语言三种注释的语法格式以及用途

java语言三种注释的语法格式以及用途

java语言三种注释的语法格式以及用途
Java语言中有三种注释方式,它们分别是:
1. 单行注释:
语法格式:使用两个斜杠(//)开始注释,后面跟随注释内容。

示例:
```java
// 这是一个单行注释
int x = 10; // 将 x 的值设为 10
```
用途:用于在一行中对代码进行简要说明,帮助开发者理解代码的功能和意图。

2. 多行注释:
语法格式:使用 / 开始注释,使用 / 结束注释。

示例:
```java
/
这是一个多行注释,可以跨越多行。

在这里说明代码的功能和作用。

/
int y = 20; / 将 y 的值设为 20 /
```
用途:用于对代码块进行详细说明,可以跨越多行。

通常用于解释复杂的代码逻辑或提供额外的信息。

3. Javadoc 注释:
语法格式:使用 / 开始注释,使用 / 结束注释。

这种注释方式也被称为Javadoc 注释。

示例:
```java
/
这是一个 Javadoc 注释,用于描述类的功能和属性。

在这里编写对类的描述信息。

/
public class MyClass { / ... / }
```
用途:用于生成 Javadoc 文档。

通过 Javadoc 工具,可以将注释解析为HTML 格式的文档,提供给开发人员参考和查阅。

用JAVA设计手机连连看游戏

用JAVA设计手机连连看游戏

且 ,此款游戏与以往的连连看游戏不同 ,可以让用户自主设计
连连 看 游 戏 的 背 景 图 片 ,还 有 欢 快 的 背 景 音乐 舒 缓 神 经 ,增 添
了更多乐趣。因此,此款游戏有一定有广大的市场。
2基 本概 念 ’
, / 下 一 关 为上 一关 减 去5 秒 的时 间
t o t a l Ti me 一 = 5:
能 的 部分 代码 如 下 :
p u b l i c v o i d o n C l i c k ( Vi e w v )( n e w Al e r t Di a l o g . B u i l d e r ( S e t D i a l o g . t h i s )

以支持手机运行 。
2 l 世 纪 ,人们 所 承 受 的 来 自各 方 面 的压 力越 来 越 大 ,人 们
需要一个释放 自我的途径 。连连看小游戏 ,规则简单 ,生动有
趣 ,对 于 需 要 释 放 压 力 ,打 发 时 间 的 人 来 说 ,是不 二 之 选 。并
p r i v a t e R e f r e s h Ha n d l e r r e f r e s h H a n d l e r =n e w R e f r e s h Ha n d l e r 0 ;
s t a r t P l a y 0 ; )
2 Mi c r o E d i t i o n ,主 要 针 对 嵌入 式 系 统 ,包 括 手 机 、P DA 等 。针
( 3 )游戏 更 换 图片 代码 。
对 手 机应 用程 序 的开发 ,s u n 还 提供 了 免费 的J 2 ME Wi r e l e s s

java注释跳转方法

java注释跳转方法

java注释跳转方法
在 Java 中,如果你想要从一个注释跳转到定义的方法,你需要使用 IDE (集成开发环境)的帮助。

大多数现代的 IDE,如 IntelliJ IDEA、Eclipse
或 NetBeans,都支持这种功能。

如果你正在使用 IntelliJ IDEA,以下是如何操作:
1. 打开你的 Java 项目。

2. 在代码编辑器中,找到你想要跳转的注释。

这个注释应该包含一个方法名。

3. 将鼠标悬停在方法名上。

你应该能看到一个下划线出现在方法名的下方。

4. 点击这个下划线。

你的 IDE 应该会跳转到这个方法的定义。

如果你正在使用 Eclipse,以下是如何操作:
1. 打开你的 Java 项目。

2. 在代码编辑器中,找到你想要跳转的注释。

这个注释应该包含一个方法名。

3. 右键点击方法名。

在弹出的菜单中,选择 "Open Declaration"。

4. 你的 IDE 应该会跳转到这个方法的定义。

这些步骤应该适用于大多数现代的 Java IDE。

如果你正在使用的是其他的IDE,你可能需要查阅其文档来了解如何从注释跳转到方法定义。

java参数注解

java参数注解

java参数注解Java参数注解是Java语言中的一种特殊注解,用于对方法的参数进行描述和限制。

参数注解可以通过反射机制获取,并在运行时对方法的参数进行校验和处理。

在Java开发中,参数注解可以提高代码可读性和可维护性,同时也能增加代码的健壮性和安全性。

一、参数注解的作用参数注解的作用是为方法的参数添加额外的描述信息和限制条件。

使用参数注解可以提高代码的可读性,使开发人员更容易理解方法的参数含义和使用方式。

参数注解还可以对方法的参数进行校验和处理,确保方法的参数满足预期的条件和要求。

二、常用的参数注解1. @NonNull:用于标记参数不能为空,如果参数为null,则抛出NullPointerException异常。

2. @NotBlank:用于标记字符串参数不能为空或空字符串。

3. @NotEmpty:用于标记集合参数不能为空或空集合。

4. @Max:用于标记数值参数的最大值。

5. @Min:用于标记数值参数的最小值。

6. @Size:用于标记集合参数或数组参数的大小范围。

7. @Pattern:用于标记字符串参数的正则表达式模式。

8. @Valid:用于标记嵌套对象参数,表示需要对该对象进行递归校验。

三、参数注解的使用示例下面以一个用户注册的方法为例,演示参数注解的使用:```javapublic void registerUser(@NotBlank(message = "用户名不能为空") String username,@NotBlank(message = "密码不能为空") @Size(min = 6, max = 16, message = "密码长度必须在6-16位之间") String password,@NotBlank(message = "手机号不能为空") @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确") String phone) {// 省略注册逻辑}```上述代码中,使用了三个常用的参数注解:@NotBlank、@Size和@Pattern。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

所实现应用的功能及具体实现. 需求规定退出:退出界面,停止游戏。

重列:重新排列按键。

再来一局:重新开始一局,分数不重计。

运行环境硬件要求:普通计算机即可。

操作系统:windows XP,windows 7 等开发环境:Myeclipse 8.5流程图实现思路1:将整张地图拆分为n行m列,接着用一个二维数组表示将在地图中显示什么,例如0表示此处没有东西(如果两个按键可以消除时,就可以将数组中对应的元素赋为0)。

2:游戏中需要处理鼠标按下时间和获取鼠标当前点击坐标信息。

3:如果其在地图范围内按下某个按键,则将其转换为在二维数组中对应的行和列。

4:游戏关键就是如何判断两张图片可以消除,这也是连连看游戏的关键吧。

在这个简单连连看中可以直接比较两个按键标示的数字,如果数字相等则可以消去,如果不相等则不能消去。

我们可以将开始点的前后左右四个方向的结点都推入队列中,继续查看其前后左右的前后左右,如果其中有为0的(代表此处没有图片,存在通路),还是元素值和开始点相同的都推入队列中。

在判断前后左右时就可以对转弯次数进行累加了,如果还是原来的方向,则保持转弯次数不变,否则转弯次数+1。

如果搜索的过程中,发现存在转弯的次数少于或者等于2的,且其结点信息和结束点一样,代表我们已经找到了开始点和结束点之间的通路了,这时也就是两个按键可以消去了。

5:如何画出两张图片消去的路径呢,我的思路是这样的,每次寻找到一个新结点时,我们可以将其上一步结点的信息也保存下来,这样当我们找到结束点时,我们就可以沿着相反的方向,搜索回去,找出原来的整条路径。

代码介绍及分析。

package test;import javax.swing.*; //AWT的扩展import java.awt.*; //抽象窗口工具包import java.awt.event.*;class lianliankan implements ActionListener //实现ActionListener接口{JFrame mainFrame; //主面板,JFrame定义的是一个容器,可向里面添加组件Container thisContainer; //定义一个容器JPanel centerPanel,southPanel,northPanel; //子面板,JPanel是个轻量级容器,可添加入JFrame中JButton diamondsButton[][] = new JButton[6][5];//定义存储游戏按钮的数组JButton exitButton,resetButton,newlyButton; //定义退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //定义分数标签,并初始化为0.JButton firstButton,secondButton; //分别记录两次先后被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; // 声明了一个静态布尔类型的变量,判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){ //init方法mainFrame=new JFrame("连连看"); //定义主面板为命名为“连连看”的JFrame容器thisContainer = mainFrame.getContentPane(); //初始化mainFrame. thisContainer.setLayout(new BorderLayout()); //定义布局为东西南北中的形式centerPanel=new JPanel(); //初始化centerPanelsouthPanel=new JPanel(); //初始化southPanelnorthPanel=new JPanel(); //初始化northPanelthisContainer.add(centerPanel,"Center"); //将centerPanel加入mainFrame中的Center位置thisContainer.add(southPanel,"South"); //将southPanel加入mainFrame中的South位置thisContainer.add(northPanel,"North"); //将northPanel加入mainFrame中的North位置centerPanel.setLayout(new GridLayout(6,5)); //将centerPanel初始化为6*5的网格布局for(int cols = 0;cols < 6;cols++){ //依次对第0列到第5列进行操作for(int rows = 0;rows < 5;rows++ ){ //依次对第0行到第4行进行操作diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1])); //新建按钮diamondsButton[cols][rows].addActionListener(this);//向此按键添加动作监听以接收来自它的动作centerPanel.add(diamondsButton[cols][rows]);//将按键添加到centerPanel中}}exitButton=new JButton("退出"); //新建“退出”按钮exitButton.addActionListener(this); //向“退出”按钮添加事件监听resetButton=new JButton("重列"); //新建“重列”按钮resetButton.addActionListener(this); //向“重列”按钮添加事件监听newlyButton=new JButton("再来一局"); //新建“再来一局”按钮newlyButton.addActionListener(this); //向“再来一局”按钮添加事件监听southPanel.add(exitButton); //将“退出”按钮添加到southPanel southPanel.add(resetButton); //将“重列”按钮添加到southPanel southPanel.add(newlyButton); //将“再来一局”按钮添加到southPanel fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.g etText())));northPanel.add(fractionLable); //将“分数”标签加入northPanel mainFrame.setBounds(280,100,500,450); // x:X轴上的起点,y:Y轴上的起点,width:长度, height:宽度mainFrame.setVisible(true); //框架可见}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(Math.random()*25+1); //在1-25之间随机产生一个数字for(int alike=1;alike<=2;alike++) {cols=(int)(Math.random()*6+1); //选中一个网格rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1); //如果该格已经存在数字,则重新选择网格rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms; //将随机产生的数字放入网格中}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.g etText())+100));//在原有数字上加100分}public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if(this.grid[i][j]!=0) {save[n]=this.grid[i][j]; //将现在任然存在的数字存入save中n++;}}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1); //重新选择格子while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1); //如果格子非空,则重新选择格子}this.grid[cols][rows]=save[n]; //将save中的数字放入所选择的的格子中n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init(); //调用initfor(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0) //如果格子的值为0diamondsButton[i][j].setVisible(false); //则按键不可见}}}public void estimateEven(int placeX,int placeY,JButton bz){if(pressInformation==false) //尚未有按键被选中{x=placeX;y=placeY;secondMsg=grid[x][y]; //将该键的值存储到secondMsgsecondButton=bz; //令secondButton为按下的键pressInformation=true; //标示已经有键被选中}else { //已经有按键被选中x0=x; //将second中的值转存到firsty0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY; //将该键存入secondsecondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg&& secondButton!=firstButton){ //如果两个格子数字相等且格子不相同xiao(); //调用xiao方法}}}public void xiao() {if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻remove(); //调用remove}else{for (j=0;j<7;j++ ) {if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮if (grid[x][i]!=0) {k=0;break;}else{ k=1; } //K=1说明通过了第一次验证}if (k==1) {linePassOne();}}if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮if (grid[x][i]!=0){k=0;break;}else { k=1; }}if (k==1){linePassOne();}}if (y==j ) {linePassOne();}}if (k==2) {if (x0==x) {remove();}if (x0<x) {for (n=x0;n<=x-1;n++ ) {if (grid[n][j]!=0) {k=0;}if(grid[n][j]==0 && n==x-1) { remove();}}}if (x0>x) {for (n=x0;n>=x+1 ;n-- ) {if (grid[n][j]!=0) {k=0;break;}if(grid[n][j]==0 && n==x+1) { remove();}}}}}for (i=0;i<8;i++ ) { //列if (grid[i][y0]==0) {if (x>i) {for (j=x-1;j>=i ;j-- ) {if (grid[j][y]!=0) {k=0;break;}else { k=1; }}if (k==1) {rowPassOne();}}if (x<i) {for (j=x+1;j<=i;j++ ) {if (grid[j][y]!=0) {break;}else { k=1; }}if (k==1) {rowPassOne();}}if (x==i) {rowPassOne();}}if (k==2){if (y0==y) {remove();}if (y0<y) {for (n=y0;n<=y-1 ;n++ ) {if (grid[i][n]!=0) {k=0;break;}if(grid[i][n]==0 && n==y-1) { remove();}}}if (y0>y) {for (n=y0;n>=y+1 ;n--) {if (grid[i][n]!=0) {k=0;break;}if(grid[i][n]==0 && n==y+1) { remove();}}}}}}}public void linePassOne(){if (y0>j){ //第一按钮同行空按钮在左边for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮if (grid[x0][i]!=0) {k=0;break;}else { k=2; } //K=2说明通过了第二次验证}}if (y0<j){ //第一按钮同行空按钮在与第二按钮之间for (i=y0+1;i<=j ;i++){if (grid[x0][i]!=0) {k=0;break;}else{ k=2; }}}}public void rowPassOne(){if (x0>i) {for (j=x0-1;j>=i ;j-- ) {if (grid[j][y0]!=0) {k=0;break;}else { k=2; }}}if (x0<i) {for (j=x0+1;j<=i ;j++ ) {if (grid[j][y0]!=0) {k=0;break;}else { k=2; }}}}public void remove(){firstButton.setVisible(false); //第一个按键不可见secondButton.setVisible(false); //第二个按键不可见fraction(); //调用fraction,在当前分数上加100分pressInformation=false; //使该静态变量还原为falsek=0;grid[x0][y0]=0; //清除该游戏按钮grid[x][y]=0; //清除该游戏按钮}public void actionPerformed(ActionEvent e) {if(e.getSource()==newlyButton){ //如果newlyButton产生动作int grid[][] = new int[8][7]; //产生新的存储按键的数组this.grid = grid;randomBuild(); //调用randomBuildmainFrame.setVisible(false); //使当前mainFrame不可见pressInformation=false; //使该静态变量还原为falseinit(); //调用init}if(e.getSource()==exitButton) //如果exitButton产生动作System.exit(0); //退出程序if(e.getSource()==resetButton) //如果resetButton产生动作reload(); //调用reloadfor(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){if(e.getSource()==diamondsButton[cols][rows]) //如果游戏按键产生动作estimateEven(cols+1,rows+1,diamondsButton[cols][rows]); //调用estimateEven}}}public static void main(String[] args) {lianliankan llk = new lianliankan(); //初始化llk.randomBuild(); //调用randomBuildllk.init(); //调用init}}个人总结这次通过JAVA实现连连看这个小游戏,我遇到了很多困难,比如各种编译错误、代码错误等,但是我也学到了很多东西。

相关文档
最新文档