简单的java连连看代码 如何用java写一个连连看游戏( 二 )


* 分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列 。但是我们用了8行 , 7列 。是等于在这个面板按钮的周围还围
//了一层是0的按钮,这样就可以实现靠近面板边缘的两个按钮可以消去)
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; cols6; cols++) {
for (int rows = 0; rows5; 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);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void randomBuild() {
int randoms, cols, rows;
for (int twins = 1; twins = 15; twins++) {//一共15对button,30个

推荐阅读