手记

扫雷

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Insets;
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.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.Timer;

public class ScanLei1 extends JFrame  implements ActionListener{

private static final long serialVersionUID = 1L;
private Container contentPane;
private JButton btn;
private JButton[] btns;
private JLabel b1;
private JLabel b2;
private JLabel b3;
private Timer timer;
private int row=9;
private int col=9;
private int bon=10;
private int[][] a;
private int b;
private int[] a1;
private JPanel p,p1,p2,p3;

public ScanLei1(String title){
super(title);
contentPane=getContentPane();
setSize(297,377);
this.setBounds(400, 100, 400, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timer =new Timer(1000,(ActionListener) this);
a = new int[row+2][col+2];
initGUI();
}

public void initGUI(){
    p3=new JPanel();
b=bon;
JMenuBar menuBar=new JMenuBar();
JMenu menu1=new JMenu("游戏");
JMenu menu2=new JMenu("帮助");
JMenuItem mi1=new JMenuItem("初级");
JMenuItem mi2 = new JMenuItem("中级");
JMenuItem mi3 =new JMenuItem("高级");
mi1.addActionListener(this);
menu1.add(mi1);
mi2.addActionListener(this);
menu1.add(mi2);
mi3.addActionListener(this);
menu1.add(mi3);
menuBar.add(menu1);
menuBar.add(menu2);
p3.add(menuBar);
b1=new JLabel(bon+"");
a1=new int[bon];
btn =new JButton("开始");
btn.addActionListener(this);
b2=new JLabel("0");
b3=new JLabel("");
btns=new JButton[row*col];
p=new JPanel();
p.setLayout(new BorderLayout());
contentPane.add(p);
p.add(p3,BorderLayout.NORTH);
//combo=new JComboBox(new Object[]{"初级","中级","高级"} );
//加监听
/*combo.addItemListener(new ItemListener(){
}});*/
p1=new JPanel();
//在那个位置
//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);
p1.add(b1);
p1.add(btn);
p1.add(b2);
p1.add(b3);
p.add(p3,BorderLayout.NORTH);
p.add(p1,BorderLayout.CENTER);
p2=new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int i=0;i<row*col;i++){
btns[i]=new JButton("");
btns[i].setMargin(new Insets(0,0,0,0));
btns[i].setFont(new Font(null,Font.BOLD,25));
btns[i].addActionListener(this);
btns[i].addMouseListener(new NormoreMouseEvent());
p2.add(btns[i]);
}
contentPane.add(p,BorderLayout.NORTH);
contentPane.add(p2,BorderLayout.CENTER);
}
public void go(){
setVisible(true);
}
public static void main(String[] args){
new ScanLei1("扫雷").go();
}
public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){
      int p=1;
  if(a[x][y]==0){
    a[x][y]=10;
        btns[i].setEnabled(false); //33 
        for(int l=y-1;l<=y+1;l++){
        int m=x-1-1;
int n=l-1;
p=1;
System.out.println(a[1][2]);
if(n>-1&&n<col&&m>-1&&m<row)
{
     for(int q=0;q<row&&p==1;q++){//col-->row;
      if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){
       if(a[x-1][l]!=0&&a[x-1][l]!=10){
            btns[n+col*q].setText(a[x-1][l]+"");
            a[x-1][l]=10;
            btns[n+col*q].setEnabled(false);
       }
       else if(a[x-1][l]==0){
        //a[x-1][l]=10;
btns[n+col*q].setEnabled(false);
out(a,btns,e,n+col*q,x-1,l); ////55////
    a[x-1][l]=10;
btns[n+col*q].setEnabled(false);
       }
           p=0;

     }
    }
}
p=1;
m=x;
if(n>-1&&n<col&&m>-1&&m<col)
{
        for(int q=0;q<row&&p==1;q++){
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){
if(a[x+1][l]!=0&&a[x+1][l]!=10){
            btns[n+col*q].setText(a[x+1][l]+"");
            a[x+1][l]=10;
            btns[n+col*q].setEnabled(false);
       }
       else if(a[x+1][l]==0){

out(a,btns,e,n+col*q,x+1,l);///55////
   a[x+1][l]=10;
   btns[n+col*q].setEnabled(false);
       }
p=0;
}
}
 
  }
        }
        int m=x-1;
          int n=y-1-1;
          p=1;
        if(n>-1&&n<col&&m>-1&&m<col)
{
          for(int q=0;q<row&&p==1;q++){
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){
if(a[x][y-1]!=0&&a[x][y-1]!=10){
            btns[n+col*q].setText(a[x][y-1]+"");
            a[x][y-1]=10;
            btns[n+col*q].setEnabled(false);
       }
       else if(a[x][y-1]==0){


out(a,btns,e,n+col*q,x,y-1);

a[x][y-1]=10;
   btns[n+col*q].setEnabled(false);
       }
p=0;
}
  }
}
          p=1;
          m=x-1;
          n=y+1-1;
        if(n>-1&&n<col&&m>-1&&m<col)
  {
          for(int q=0;q<row&&p==1;q++){
if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){
if(a[x][y+1]!=0&&a[x][y+1]!=10){
            btns[n+col*q].setText(a[x][y+1]+"");
            a[x][y+1]=10;
            btns[n+col*q].setEnabled(false);
       }
       else if(a[x][y+1]==0){
out(a,btns,e,n+col*q,x,y+1);
     a[x][y+1]=10;
btns[n+col*q].setEnabled(false);
       }
p=0;
}
 }
       }
}
}
public void actionPerformed(ActionEvent e) {

if(e.getActionCommand()=="初级"){
row=9;
col=9;
bon=10;
a1=new int[bon];
b=bon;
//setSize(297,377);
a = new int[row+2][col+2];
this.remove(p2);
timer.stop();
b1.setText("10");
b2.setText("0");
b3.setText("");
btns=new JButton[row*col];
p2=new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int i=0;i<row*col;i++){
btns[i]=new JButton("     ");
btns[i].setMargin(new Insets(0,0,0,0));
btns[i].setFont(new Font(null,Font.BOLD,25));
btns[i].addActionListener(this);
btns[i].addMouseListener(new NormoreMouseEvent());
p2.add(btns[i]);
}
contentPane.add(p2,BorderLayout.CENTER);
//setSize(297,377);
this.pack();
for(int i=0;i<row*col;i++){
btns[i].setText(" ");
btns[i].setEnabled(true);
}
for(int i=0;i<row+2;i++){
for(int j=0;j<col+2;j++){
a[i][j]=0;
}
}

}else if(e.getActionCommand()=="中级"){
row=16;
col=16;
bon=40;
//setSize(33*col,33*row+80);
a1=new int[bon];
a = new int[row+2][col+2];
b=bon;
this.remove(p2);
timer.stop();
b1.setText("40");
b2.setText("0");
b3.setText("");
btns=new JButton[row*col];

p2=new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int i=0;i<row*col;i++){
btns[i]=new JButton("    ");
btns[i].setMargin(new Insets(0,0,0,0));
btns[i].setFont(new Font(null,Font.BOLD,25));
btns[i].addActionListener(this);
btns[i].addMouseListener(new NormoreMouseEvent());
p2.add(btns[i]);
}
contentPane.add(p2,BorderLayout.CENTER);
this.pack();
//setSize(33*col,33*row+80);
for(int i=0;i<row*col;i++){
btns[i].setText("");
btns[i].setEnabled(true);
}
for(int i=0;i<row+2;i++){
for(int j=0;j<col+2;j++){
a[i][j]=0;
}
}
}else if(e.getActionCommand()=="高级"){
row=16;
col=32;
bon=99;
setSize(33*col,33*row+80);
a1=new int[bon];
a = new int[row+2][col+2];
b=bon;
this.remove(p2);
timer.stop();
b1.setText("99");
b2.setText("0");
b3.setText("");
btns=new JButton[row*col];
p2=new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int i=0;i<row*col;i++){
btns[i]=new JButton("    ");
btns[i].setMargin(new Insets(0,0,0,0));
btns[i].setFont(new Font(null,Font.BOLD,25));
btns[i].addActionListener(this);
btns[i].addMouseListener(new NormoreMouseEvent());
p2.add(btns[i]);
}
contentPane.add(p2,BorderLayout.CENTER);
//setSize(33*col,33*row+80);
this.pack();
for(int i=0;i<row*col;i++){
btns[i].setText("");
btns[i].setEnabled(true);
}
for(int i=0;i<row+2;i++){
for(int j=0;j<col+2;j++){
a[i][j]=0;
}
}

}
if(e.getSource()==btn){
timer.start();
b=bon;
b3.setText("");
//System.out.println(bon);
//清空
for(int i=0;i<row*col;i++){
btns[i].setText("");
btns[i].setEnabled(true);
}
for(int i=0;i<row+2;i++){
for(int j=0;j<col+2;j++){
a[i][j]=0;
}
}
//产生随机数
for(int i=0;i<bon;i++)
{   int p=1;
int m=(int)(Math.random()*row*col);
while(p==1){
   int l=1;
   int j;
for( j=0;j<i&&l==1;j++){

    if(a1[j]==m){
     m=(int)(Math.random()*row*col); 
     l=0;
     }
}
if(j==i){
a1[i]=m;
p=0;
}
}
}
b1.setText(bon+"");
b2.setText("0");
//布雷
   for(int i=0;i<bon;i++){
   int x=(a1[i]/col+1);
   int y=(a1[i]%col+1);
a[x][y]=100;
  }
  for(int i=0;i<row+2;i++){
  for(int j=0;j<col+2;j++){
  if(i==0||j==0||i==row+1||j==col+1){
     a[i][j]=0; 
  }
  }
  }
  for(int i=1;i<=row;i++){
  for(int j=1;j<=col;j++){
  if(a[i][j]!=100){
  for(int l=j-1;l<=j+1;l++){
 if(a[i-1][l]==100){
  a[i][j]++;
   }
 if(a[i+1][l]==100){
  a[i][j]++;
 }
  }
  if(a[i][j-1]==100){
  a[i][j]++;
  }
  if(a[i][j+1]==100){
  a[i][j]++;
  }   
     } 
     }
     }   
    }
if(e.getSource()==timer)
{
           String time=b2.getText().trim();

int t=Integer.parseInt(time);
//System.out.println(t);
if(t>=600){
timer.stop();
}else{

t++;
b2.setText(t+"");
}
}
for(int i=0;i<col*row;i++){
if(btns[i].getText()!="")
{
      int x=i/col+1;
      int y=i%col+1;
      if(e.getSource()==btns[i]&&a[x][y]==100){
     btns[i].setText("");
     btns[i].setEnabled(false);
     a[x][y]=10;
     for(int k=0;k<col*row;k++){
        int m1=k/col+1;
      int n1=k%col+1;
        if(a[m1][n1]!=10&&btns[k].getText()==""){
        btns[k].setText("*o*");
        }
        }
     for(int j=0;j<col*row;j++){
      int m=j/col+1;
      int n=j%col+1;
      if(a[m][n]==100){
    btns[j].setText("");
        btns[j].setEnabled(false);       
        b3.setText("你输了 !!");
    }
    btns[j].setEnabled(false);
    a[m][n]=10;
     }
     timer.stop();    
     }
  else if(e.getSource()==btns[i]){
      if(a[x][y]==0){
        out(a,btns,e,i,x,y);
        a[x][y]=10;
        btns[i].setEnabled(false); 
      }
       if(a[x][y]!=0&&a[x][y]!=10){
            btns[i].setText(a[x][y]+"");
            btns[i].setEnabled(false);
            a[x][y]=10;
       }
   }
   }else if(btns[i].getText()==""){
   }
 }
}
class NormoreMouseEvent extends MouseAdapter{
public void mouseClicked(MouseEvent e) {
System.out.println(b);
for(int i=0;i<col*row;i++){
  int x1=i/col+1;
      int y1=i%col+1;
if(e.getSource()==btns[i]&&btns[i].getText()!=""&&a[x1][y1]!=10)
{
      if(e.getButton()==MouseEvent.BUTTON3){
     btns[i].setText("");
     b--;
     if(b==0){
     int flag=0;
     for(int j=0;j<col*row;j++){
      int x=j/col+1;
      int y=j%col+1;
     if(a[x][y]==100&&btns[j].getText()==""){
     flag++;
     }
     }
     if(flag==bon){
     timer.stop();
     b3.setText("你赢了!");
     }
     }
     b1.setText(b+"");
      }
}else if(e.getSource()==btns[i]&&btns[i].getText()==""&&a[x1][y1]!=-1){
if(e.getButton()==MouseEvent.BUTTON3){
  btns[i].setText("");
  b++;
  if(b>bon){
 b1.setText(bon+""); 
  }
  else{
  b1.setText(b+"");
  }   
      btns[i].setEnabled(true);
}
}
}
}
}
}

1人推荐
随时随地看视频
慕课网APP