java基于swing实现的连连看代码.doc
java基于swing实现的连连看代码这篇文章主要介绍了java基于swing实现的连连看代码,包含了游戏中涉及的事件处理与逻辑功能,需要的朋友可以参考下本文实例讲述了java基于swing实现连连看代码。分享给大家供大家参考。 主要功能代码如下: 复制代码 代码如下: package llkan; import javax.swing.*; import java.awt.*; import java.awt.event.*; /* * 连连看游戏 * author Administrator *2014年10月17日 */ public class MainGame implements ActionListener JFrame mainFrame; / 主面板 Container thisContainer; JPanel centerPanel, southPanel, northPanel; / 子面板 JButton diamondsButton = new JButton65;/ 游戏按钮数组 JButton exitButton, resetButton, newlyButton; / 退出,重列,重新开始按钮 JLabel fractionLable = new JLabel("0"); / 分数标签 JButton firstButton, secondButton; / 分别记录两次被选中的按钮 int grid = new int87;/ 储存游戏按钮位置 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("连连看游戏"); 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+) diamondsButtoncolsrows = new JButton( String.valueOf(gridcols + 1rows + 1); diamondsButtoncolsrows.addActionListener(this); centerPanel.add(diamondsButtoncolsrows); 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 (gridcolsrows != 0) cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); this.gridcolsrows = randoms; public void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable .getText() + 100); public void reload() int save = new int30; int n = 0, cols, rows; int grid = new int87; for (int i = 0; i <= 6; i+) for (int j = 0; j <= 5; j+) if (this.gridij != 0) saven = this.gridij; n+; n = n - 1; this.grid = grid; while (n >= 0) cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); while (gridcolsrows != 0) cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); this.gridcolsrows = saven; n-; mainFrame.setVisible(false); pressInformation = false; / 这里一定要将按钮点击信息归为初始 init(); for (int i = 0; i < 6; i+) for (int j = 0; j < 5; j+) if (gridi + 1j + 1 = 0) diamondsButtonij.setVisible(false); public void estimateEven(int placeX, www.hunanwang.netint placeY, JButton bz) if (pressInformation = false) x = placeX; y = placeY; secondMsg = gridxy; secondButton = bz; pressInformation = true; else x0 = x; y0 = y; fristMsg = secondMsg; firstButton = secondwww.visa158.comButton; x = placeX; y = placeY; secondMsg = gridxy; secondButton = bz; if (fristMsg = secondMsg && secondButton != firstButton) xiao(); 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 < 7; j+) if (gridx0j = 0) / 判断第一个按钮同行哪个按钮为空 if (y > j) / 如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i = y - 1; i >= j; i-) / 判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi != 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 (gridxi != 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 (gridnj != 0) k = 0; break; if (gridnj = 0 && n = x - 1) remove(); if (x0 > x) for (n = x0; n >= x + 1; n-) if (gridnj != 0) k = 0; break; if (gridnj = 0 && n = x + 1) remove(); for (i = 0; i < 8; i+) / 列 if (gridiy0 = 0) if (x > i) for (j = x - 1; j >= i; j-) if (gridjy != 0) k = 0; break; else k = 1; if (k = 1) rowPassOne(); if (x < i) for (j = x + 1; j <= i; j+) if (gridjy != 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 (gridin != 0) k = 0; break; if (gridin = 0 && n = y - 1) remove(); if (y0 > y) for (n = y0; n >= y + 1; n-) if (gridin != 0) k = 0; break; if (gridin = 0 && n = y + 1) remove(); public void linePassOne() if (y0 > j) / 第一按钮同行空按钮在左边 for (i = y0 - 1; i >= j; i-) / 判断第一按钮同左侧空按钮之间有没按钮 if (gridx0i != 0) k = 0; break; else k = 2; / K=2说明通过了第二次验证 if (y0 < j) / 第一按钮同行空按钮在与第二按钮之间 for (i = y0 + 1; i <=