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游戏开发--连连看2-实现游戏算法

java游戏开发--连连看2-实现游戏算法

将游戏地图转换为数组来描述算法总是很枯燥的,没有直接设计界面来得舒服,然而,算法却是整个程序的核心,所以,仅管枯燥,我们还是得耐心地完成这一步。

在进行程序算法的设计时,我们首先要尽可能抛开一些无关紧要的部分,这样可以使算法看起来直接明了,但同时也要考虑弹性,以便将来扩充。

在前面已经说过了,整个游戏的核心算法也就是以二维数组为主体的算法,那么,定义一个二维数组是必不可少的了。

二维数组究竟应该有多大呢? 10X10 是不是小了, 20*20 呢,大了?究竟多大比较合适?为了考虑到程序以后改动的需要,我们还是定义成变量吧,这样以后要改动的时候,只需要改动一下变量的值就行了,因此,我们现在为程序增加一个类,使之专门用来保存与程序有关的一些数据。

//Setting.javapublic static final int ROW = 8; // 假设地图有 8 行public static final int COLUMN = 8; // 假设地图有 8 列至于为什么要定义成 public static final ,这个,自己想想就知道了:)还不知道?晕,看看书吧:(现在,我们将这个类起名为 Map ,同时,我们规定,为了描述地图中空白的区域,我们使用 0 来表示。

//Map.javaprivate int[][] map = new int[Setting.ROW][Setting.COLUMN];初始化游戏地图在地图初始化的时候,我们需要用一些“随机”的数字来填充这张地图,之所有将“随机”用引号括起来,是因为这些数字并不是真正意义上的随机:首先,数组中具有相同值的元素只能出现 4 次(具有 0 值的元素除外),其次,这些数字是被散乱的分布在数组中的。

要使元素出现 4 次,那么数组中所有不重复的元素个数最大为数组的大小 /4 ,为了简单起先,我们使这些元素的值用 1 、 2 、 3 ……进行编号。

要想将这些分配好的元素再分配到二维数组中,我们需要一个一维数组来辅助完成这项工作。

连连看源代码

连连看源代码

摘要:近年来,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实战之连连看游戏源码(完整版)

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class liankan implements ActionListener {JFrame mainFrame; //主面板JPanel centerPanel,saidPanel; //子面板JButton diamondsButton[][] = new JButton[10][10];//游戏按钮数组JButton firstButton, secondButton; //分别记录两次被选中的按钮JButton backButton,remarkButton,newlyButton,startButton;//返回,重列,重新,开始|暂停按钮JLabel lable1 = new JLabel("分数:");JLabel lable2 = new JLabel("0"); //分数标签int grid[][] = new int[12][12];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 AddGif(){for (int cols = 0; cols < 10; cols++){for (int rows = 0; rows < 10; rows++){diamondsButton[cols][rows]=new JButton(newImageIcon(String.valueOf(grid[cols + 1][rows + 1])+".gif"));diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}}public voidcreate(){mainFrame = new JFrame("连连看");mainFrame.setLayout(null);centerPanel = new JPanel();saidPanel = new JPanel();saidPanel.setLayout(null);saidPanel.setBackground(Color.yellow);centerPanel.setLayout(new GridLayout(10,10)); //10*10的网格布局AddGif();backButton = new JButton("返回");backButton.addActionListener(this);remarkButton = new JButton("重列");remarkButton.addActionListener(this);newlyButton = new JButton("重新开始");newlyButton.addActionListener(this);mainFrame.setBounds(100, 100, 750, 550);mainFrame.add(centerPanel);saidPanel.add(lable1);saidPanel.add(lable2);mainFrame.add(saidPanel);saidPanel.add(remarkButton);saidPanel.add(newlyButton);remarkButton.setBounds(100,100,90,30);newlyButton.setBounds(100,150,90,30);saidPanel.setBounds(470,0,270,530);lable1.setBounds(100,50,70,50);lable2.setBounds(170,50,100,50);centerPanel.setBounds(50,50,370,410);mainFrame.setVisible(true);mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void randomBuild(){int randoms, cols, rows;for (int twins = 1; twins <= 25; twins++){//一共15对button,30个randoms = (int) (Math.random() * 25 + 1);//button上的数字for (int alike = 1; alike <= 4; alike++){cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);while (grid[cols][rows] != 0) //等于0说明这个空格有了button {cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);}this.grid[cols][rows] = randoms;}}}public void reload(){int save[] = new int[100];int n = 0, cols, rows;int grid[][] = new int[12][12];for (int i = 0; i <= 10; i++){for (int j = 0; j <= 10; j++){if (this.grid[i][j] != 0){save[n] = this.grid[i][j];//记下每个button的数字n++;//有几个没有消去的button }}}n = n - 1;this.grid = grid;while (n >= 0){//把没有消去的button重新放一次cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);while (grid[cols][rows] != 0){cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);}this.grid[cols][rows] = save[n];n--;}mainFrame.setVisible(false);pressInformation = false; //这里一定要将按钮点击信息归为初始create();for (int i = 0; i < 10; i++){for (int j = 0; j < 10; 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 && secondButton != firstButton){xiao();}}}public void fraction(){ //分数加100lable2.setText(String.valueOf(Integer.parseInt(lable2.getText()) + 100));}public void xiao(){if ((x0 == x && (y0 == y + 1 || y0 == y - 1))|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { //判断是否相邻remove();} else {for (j = 0; j < 12; j++) {if (grid[x0][j] == 0) { //判断和第一个按钮同行的哪个按钮为空//如果找到一个为空的,就按列值的三种情况比较第二个按钮与空按钮的位置if (y > j) {//第二个按钮在空按钮右边for (i = y - 1; i >= j; i--) { //检测从第二个按钮横向左边到空格所在列为止是否全是空格if (grid[x][i] != 0) {k = 0;break;//存在非空格的就退出,这一退出就不可能k==2了,所以就会到下而215行出同理的判断列} else {k = 1;} // K=1说明全是空格通过了第一次验证,也就是从第二个按钮横向左边到空格所在列为止全是空格}if (k == 1) {linePassOne();//进入第二次验证,也就是从第一个按钮到它同行的空格之间的空格判断}}if (y < j) { //第二个按钮在空按钮左边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();}}//第三次检测,检测确定为空的第j列的那个按钮竖向到第二个按钮,看是不是有按钮if (k == 2) {if (x0 == x) {//第一,二按钮在同行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();}}}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//当上面的检测与第一个按钮同行的空格按钮失败后(不能找到与第二个按钮的相连路经),下面就执行//检测与第一个按钮同列的空格按钮for (i = 0; i < 12; 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) {k = 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();}}}}}//--------------------------------for}//-------------else}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();pressInformation = false;k = 0;grid[x0][y0] = 0;grid[x][y] = 0;}public void actionPerformed(ActionEvent e){if (e.getSource() == newlyButton){int grid[][] = new int[12][12];this.grid = grid;lable2.setText("0");randomBuild();mainFrame.setVisible(false);pressInformation = false;create();}if (e.getSource() == remarkButton)reload();for (int cols = 0; cols < 10; cols++){for (int rows = 0; rows < 10; rows++){if (e.getSource() == diamondsButton[cols][rows])estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]);}}}public static void main(String[] args){liankan llk = new liankan();llk.randomBuild();llk.create();}}。

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的连连看游戏设计与实现Introduction连连看游戏是一种休闲益智游戏,旨在通过找到相同的图案来消除不断出现的图案。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

连连看游戏设计思想及程序详细讲解(附源码)

连连看游戏设计思想及程序详细讲解(附源码)

连连看游戏设计思想及程序详细讲解(附源码)1、连连的设计思想1)、准备好相应的大小相同的小图片若干public static final int CELL_SIZEx = 36;public static final int CELL_SIZEy = 40;public static final int CELL_COLS = 34;public static final int CELL_ROWS = 14;public static final int CELL_ZONGS = (CELL_COLS-2)*(CELL_ROWS-2);例如本程序:小图片宽:CELL_SIZEx = 36 高:CELL_SIZEy = 40摆放小图片舞台:横向:34格CELL_COLS= 34纵向:14格CELL_ROWS= 14真正要摆放图片的格数:CELL_ZONGS = (CELL_COLS-2)*(CELL_ROWS-2)即:四面的边格不放图片2)、设定34*14个图片数组,其中除四边外,全部随机存入图片,要保证每种图片各数相同(至少不要差太多),并且是偶数(奇数最后消不掉了)。

3)、在舞台上放上鼠标监听器,当点击任一图片时,做出判断,是否第一次点击(点击标记为0就是第一次点击),如果是第一次点击,就将相关信息记录到第一次内容中,比如:x1,y1,cell1,并将点击标记记为1,再次点击后,判断,点的是否同一图片,如果是,不做处理,如果不是,就认为点击了第二个图片,将相关住处记录到第二次内容中,如:x2,y2,cell2。

然后得用这个方法public boolean delkey()判断两点是否可以连通,如果可以,就消掉图片,不可以就不做处理。

整个连连看原理就是这样,其中有几个难点:1、随机图片,并且保证每种图片数相同,并且为偶数。

2、点击监听3、判断两点是否连通,这个算法是整个连连看的核心,也是最难的。

JAVA课程设计—连连看最终版要点

JAVA课程设计—连连看最终版要点

JAVA课程设计报告实验题目:“连连看”游戏程序设计小组成员:王飞铭、毛建平、陈银银、黄庭威成员分工:组长:王飞铭王飞铭:actionPerformed():重来一局按钮的响应事件及remove()判断移去方法毛建平:xiao()消去方法、estimateEven()方法陈银银:init()方法:游戏主界面和main()方法实现黄庭威:randomBuild() 产生随机数方法、fraction()刷新方法(一):内容:1:功能需求和分析:(1)该游戏界面为:数字方格类型,由6竖7横的直线平行垂直交叉而组成,分别是6行5列凹方块拼接,共有30格小方块。

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

(2)游戏规则是:将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则视为无效,如果一对数字连接成功,那么就会消失在界面,并且分数标签会加分,继续游戏,直到游戏结束。

(3)帮助项目:在游戏过程中,如果出现没有可以连接的数字对时候,可按界面下方按钮刷新重新排列,便可以可继续游戏。

(4)退出游戏:可以鼠标点击“退出”按钮,结束游戏。

(5)再来一局:本局结束或者中途不想继续玩本局,可以点击界面下方的再来一局,系统会自动再次重新开始。

(二):主要方法:首先我们定义了一个lianliankan类,实现了接口ActionListener:1) init()方法:实现游戏主界面;2) randomBuild()方法:用来产生游戏按钮上的随机数;3) fraction()方法:游戏界面最上面用来加分;4) reload()方法:用来刷新,重载,窗体界面;5) estimateEven()方法:判断按钮数字是否满足消去的条件linePassOne()方法:判断第一按钮同左右侧空按钮之间⑦rowPassOne()方法:判断第一按钮同列空按钮与第二按钮;6)actionPerformed(ActionEvent e)方法:用来实现重来一局按钮的响应事件;7)main(String[] args)方法:主函数;8)xiao()方法:消去方法(三):界面要求:用图形界面实现,参考下系统流程图如下开始初始化设置开始界面画表格初始化数值游戏游戏是否结束显示游戏结束画面游戏结束NOYes(四):代码设计package 数字版;/**本游戏是连连看,上面出现的都是数字,点击两个相邻的或者之间没有第三个的,便可以消去。

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连连看程序代码
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. 游戏结束当所有方块都被消除或者游戏时间结束时,游戏结束。

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

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

连连看游戏课程设计+源代码

连连看游戏课程设计+源代码

课程设计课程名称:程序设计课程设计课题名称:网络连连看游戏班级:xxx学号:xxx姓名:xxx指导教师:计算机学院一、课程设计目的本课程设计的目的最主要是掌握linux系统下C++编程思想,以及关于QT软件编程,设计出连连看图形界面,实现连连看各项功能,提高编程和解决问题的能力。

二、课程设计内容设计一个连连看游戏项目,实现如下功能:1、设计连连看游戏界面,能让用户在该界面上进行相关操作。

2、为游戏添加功能:聊天对话,逻辑层相消,游戏级别,时间限制等。

三、课程设计要求1、课程设计的程序必须用C++语言完成。

2、课程设计必须在linux系统下进行。

3、要求写出需求分析报告。

分析部分包括功能需求和界面需求。

4、本项目要求分团队完成,连连看游戏五人一组共同合作,培养学生团队合作的能力。

四、系统的需求分析和模块设计1、需求分析本项目需完成两大模块设计:一为游戏界面设计,二为游戏功能设计。

2、模块分解系统功能层次模块图:五、系统的程序设计与实现程序的运行环境:Linux终端开发环境:QT、C++程序的详细设计:连连看消去算法实现在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。

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

这样就会有三条路经。

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

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

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

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

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

1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。

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实现游戏连连看(有源代码)

2.4流程图如下图2 主函数流程图图3 游戏进行流程图图4 使用炸弹流程图图5 计算时间流程图图6 开始游戏后画面用户选择两张一样的图片,通过鼠标进行选取,如果用户两次点击的图片不相同,那么系统认为用户没有点(鼠标记数归0),以完成用户以后的选取工作。

如果用户选择的是相同的图片(如第八行第二列和第八行第三列),那么系统会消除这两张图片,并使鼠标记数为0,并消除这两张图片的标记,使里面的图片被标记在外面。

以便用户可以进行以后的选择。

图7 消除三对后画面用户也可使通过使用“炸弹”功能进行消除图片。

方法是点击菜单中的“炸弹”选项使用,点击后如果界面上有两张可以相连的相同图片就随机消除两张可以相连的相同的图片(如第一行第一列河第一行第四列)。

图8 使用炸弹后画面炸弹数目是有限的,默认数目为三,每使用一次“炸弹”功能,炸弹数目就会自动减一,当炸弹数目为零时(使用三次“炸弹”功能)。

并且用户想再次使用炸弹时,系统会弹出对话框提示用户,并把菜单中“炸弹”选项变为灰色(用户不可使用)。

图9 炸弹使用光后画面当系统开始游戏后,系统会在后台记录时间,如果在用户还没有消除所有图片时,系统时间到了,那么系统会弹出对话框,提示用户,时间到了,游戏失败。

图10 时间到时的画面当用户点击确定后,系统还会弹出对话框询问用户是否重新开始,用户选择“是”时,系统会开始新游戏;当用户选择“否”时,系统会返回开始界面;当用户选择“取消”时,系统会返回提示时间到的界面。

图11 点击确定时的画面如果在时间未到时,用户使所有的图片都消失(两两消除,直到最后一对),系统会提示用户游戏以通过,点“确定”后回到开始界面。

图12 通关画面4.设计体会通过这次课程设计我学到了不少东西,也发现了大量的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

因而,通过课程设计之后,把以前所学过的知识重新温故。

有些在设计过程中已解决,有些还有待今后慢慢学习,只要认真学就会有更多的收获。

Java连连看游戏-推荐下载

Java连连看游戏-推荐下载
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线0产中不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资22负料,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看2与全22过,22度并22工且22作尽2下可护1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编5试技写、卷术重电保交要气护底设设装。备备4置管高调、动线中试电作敷资高气,设料中课并3技试资件且、术卷料拒管中试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListener{JFrame mainFrame; // 主面板JPanel centerPanel,saidPanel; // 子面板JButton diamondsButton[][] = new JButton[10][10];// 游戏按钮数组JButton firstButton, secondButton; // 分别记录两次被选中的按钮JButton backButton, remarkButton, newlyButton, startButton;// 返回,重列,重新,开始|暂停按钮JLabel lable1 = new JLabel("分数:");JLabel lable2 = new JLabel("0"); // 分数标签int grid[][] = new int[12][12];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 AddGif(){for (int cols = 0; cols < 10; cols++){for (int rows = 0; rows < 10; rows++){diamondsButton[cols][rows] = new JButton(new ImageIcon(String.valueOf(grid[cols + 1][rows + 1])+".gif"));diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}}public void create(){mainFrame = new JFrame("连连看");mainFrame.setLayout(null);centerPanel = new JPanel();saidPanel = new JPanel();saidPanel.setLayout(null);saidPanel.setBackground(Color.yellow);centerPanel.setLayout(new GridLayout(10,10)); //10*10的网格布局AddGif();backButton = new JButton("返回");backButton.addActionListener(this);remarkButton = new JButton("重列");remarkButton.addActionListener(this);newlyButton = new JButton("重新开始");newlyButton.addActionListener(this);mainFrame.setBounds(100, 100, 750, 550);mainFrame.add(centerPanel);saidPanel.add(lable1);saidPanel.add(lable2);mainFrame.add(saidPanel);saidPanel.add(remarkButton);saidPanel.add(newlyButton);remarkButton.setBounds(100,100,90,30);newlyButton.setBounds(100,150,90,30);saidPanel.setBounds(470,0,270,530);lable1.setBounds(100,50,70,50);lable2.setBounds(170,50,100,50);centerPanel.setBounds(50,50,370,410);mainFrame.setVisible(true);mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void randomBuild(){int randoms, cols, rows;for (int twins = 1; twins <= 25; twins++){//一共15对button,30个randoms = (int) (Math.random() * 25 + 1);//button上的数字for (int alike = 1; alike <= 4; alike++){cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);while (grid[cols][rows] != 0) //等于0说明这个空格有了button{cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);}this.grid[cols][rows] = randoms;}}public void reload(){int save[] = new int[100];int n = 0, cols, rows;int grid[][] = new int[12][12];for (int i = 0; i <= 10; i++){for (int j = 0; j <= 10; j++){if (this.grid[i][j] != 0){save[n] = this.grid[i][j];//记下每个button的数字n++;//有几个没有消去的button}}}n = n - 1;this.grid = grid;while (n >= 0){//把没有消去的button重新放一次cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);while (grid[cols][rows] != 0){cols = (int) (Math.random() * 10 + 1);rows = (int) (Math.random() * 10 + 1);}this.grid[cols][rows] = save[n];n--;}mainFrame.setVisible(false);pressInformation = false; // 这里一定要将按钮点击信息归为初始create();for (int i = 0; i < 10; i++){for (int j = 0; j < 10; 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 && secondButton != firstButton){xiao();}}}public void fraction(){ //分数加100lable2.setText(String.valueOf(Integer.parseInt(lable2.getText()) + 100));}public void xiao(){if ((x0 == x && (y0 == y + 1 || y0 == y - 1))|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // 判断是否相邻remove();} else {for (j = 0; j < 12; j++) {if (grid[x0][j] == 0) { // 判断和第一个按钮同行的哪个按钮为空//如果找到一个为空的,就按列值的三种情况比较第二个按钮与空按钮的位置if (y > j) {//第二个按钮在空按钮右边for (i = y - 1; i >= j; i--) { //检测从第二个按钮横向左边到空格所在列为止是否全是空格if (grid[x][i] != 0) {k = 0;break;//存在非空格的就退出,这一退出就不可能k==2了,所以就会到下而215行出同理的判断列} else {k = 1;} // K=1说明全是空格通过了第一次验证,也就是从第二个按钮横向左边到空格所在列为止全是空格}if (k == 1) {linePassOne();//进入第二次验证,也就是从第一个按钮到它同行的空格之间的空格判断}}if (y < j) { // 第二个按钮在空按钮左边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();}}//第三次检测,检测确定为空的第j列的那个按钮竖向到第二个按钮,看是不是有按钮 if (k == 2) {if (x0 == x) {//第一,二按钮在同行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();}}}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//当上面的检测与第一个按钮同行的空格按钮失败后(不能找到与第二个按钮的相连路经),下面就执行//检测与第一个按钮同列的空格按钮for (i = 0; i < 12; 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) {k = 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();}}}}}//--------------------------------for}//-------------else}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();pressInformation = false;k = 0;grid[x0][y0] = 0;grid[x][y] = 0;}public void actionPerformed(ActionEvent e){if (e.getSource() == newlyButton){int grid[][] = new int[12][12];this.grid = grid;lable2.setText("0");randomBuild();mainFrame.setVisible(false);pressInformation = false;create();}if (e.getSource() == remarkButton)reload();for (int cols = 0; cols < 10; cols++){for (int rows = 0; rows < 10; rows++){if (e.getSource() == diamondsButton[cols][rows])estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]);}}}public static void main(String[] args){lianliankan llk = new lianliankan();llk.randomBuild();llk.create();}}。

相关文档
最新文档