2.[代码][Java]代码
package com;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class LianLianKan extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LianLianKan frame = new LianLianKan();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private int i, j;
private static JPanel contentPane;
private static JButton[][] buttonMatrix;
private static int[][] status;
private static Point[][] pointMatrix;
private static Map button2PointMap;
private static String head = "image/test";
private static String tail = ".jpg";
private static String clickTail = "-select.jpg";
private JButton first;
private JButton second;
private static final int ROW = 300 / 50;
private static final int COL = 450 / 50;
private static final int pictureNum = 11;
private static ArrayList pointList;
/**
* Create the frame.
*/
public LianLianKan() {
long start = System.currentTimeMillis();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 570, 440);
contentPane = new JPanel();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
buttonMatrix = new JButton[ROW + 2][COL + 2];
pointMatrix = new Point[ROW + 2][COL + 2];
status = new int[ROW + 2][COL + 2];
button2PointMap = new HashMap();
pointList = new ArrayList();
visitedPoint = new HashSet();
genPointList();
first = null;
second = null;
for (i = 0; i <= (ROW + 1); i++) {
for (j = 0; j <= (COL + 1); j++) {
pointMatrix[i][j] = new Point(i, j);
if(i==0 || j==0 || i==(ROW+1) || j==(COL+1)){
setButton(i, j, -1);
}
}
}
for (i = 1; i < ROW + 1; i++) {
for (j = 1; j < COL + 1; j++) {
if (status[i][j] != 0) {
continue;
} else {
int num = genRandomNum();
status[i][j] = num;
Point point = new Point(i, j);
pointList.remove(point);
Point pairPoint = getRandomPair(num, point);
int pairI = pairPoint.getRow();
int pairJ = pairPoint.getCol();
status[pairI][pairJ] = num;
pointList.remove(pairPoint);
setButton(i, j, num);
setButton(pairI, pairJ, num);
}
}
}
long end = System.currentTimeMillis();
System.out.println("cost time:" + (end - start));
}
private void setButton(int row, int col, int num) {
buttonMatrix[row][col] = new JButton("");
buttonMatrix[row][col].addActionListener(new