package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Mine extends MouseAdapter {
private JFrame mainFrame;
private int[][] data;
private JButton[][] buttons;
private JButton startJB;
private Label l;
private int row;
private int col;
private int mineNumber;
private int mineCount;
private boolean isOver;
public Mine(){
row=15;
col=15;
mainFrame = new JFrame("扫雷");
data = new int[row][col];
buttons = new JButton[row][col];
startJB = new JButton("start");
l = new Label("welcome to mine ");
mineNumber = row * col/7;
}
public void init(){
JPanel north = new JPanel();
JPanel center = new JPanel();
JPanel south = new JPanel();
north.setLayout(new FlowLayout());
center.setLayout(new FlowLayout());
south.setLayout(new GridLayout(row,col,4,4));
mainFrame.setLayout(new BorderLayout());
mainFrame.add(north,BorderLayout.NORTH);
mainFrame.add(center,BorderLayout.CENTER);
mainFrame.add(south,BorderLayout.SOUTH);
north.add(l);
startJB.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i = 0;i<row;i++){
for(int j=0;j<col;j++){
buttons[i][j].setText(" ");
buttons[i][j].setBackground(Color.WHITE);
data[i][j]=0;
isOver = false;
}
}
hashMine();
mineCount = 0;
l.setText("let's go");
}
});
center.add(startJB);
for(int i = 0;i<row;i++){
for(int j=0;j<col;j++){
buttons[i][j]=new JButton(" ");
buttons[i][j].setName((i+":"+j));
//按钮的名字
buttons[i][j].setBackground(Color.WHITE);
buttons[i][j].addMouseListener(this);
south.add(buttons[i][j]);
}
}
hashMine();
}
public void start(){
mainFrame.setSize(800,600);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
public void hashMine(){
//得到随机数,确定类的位置
for(int i=1;i<mineNumber;i++){
data[(int)(Math.random()*row)][(int)(Math.random()*col)]=-1;
}
for(int i=0;i<row;i++){
for(int j=0;i<col;j++){
if(data[i][j] == -1)
continue;
int sum=0;
for (int m=-1;m<=1;m++){
for(int n = -1;n<=1;n++){
if(i +m>=0&&j+n>=0&&i+m<row&&j+n<col){
if(data[i+m][j+n]==-1)
sum++;
}
}
}
data[i][j]=sum;
}
}
}