package com;
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 saolei 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 saolei(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 saolei("扫雷").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);
					}
				}
			}
		}
	}
}

最近下载更多
微信网友_7313318911430656  LV1 2024年12月26日
你们的代码都是我的了  LV16 2022年11月16日
微信网友_6195329201262592  LV1 2022年10月28日
yangjian369  LV1 2022年5月17日
253552950  LV1 2022年3月17日
zzzzz123  LV2 2021年12月20日
Demo1111  LV30 2021年12月9日
loveGG123456  LV1 2021年12月3日
清都  LV1 2021年11月14日
13063957662  LV1 2021年7月3日
最近浏览更多
微信网友_7313318911430656  LV1 2024年12月26日
17360557751 2024年7月20日
暂无贡献等级
lshlsh 2023年12月25日
暂无贡献等级
zxcvb789456 2023年6月9日
暂无贡献等级
win1991  LV6 2023年3月27日
wdasfgas 2022年11月27日
暂无贡献等级
你们的代码都是我的了  LV16 2022年11月16日
微信网友_6195329201262592  LV1 2022年10月28日
craven  LV2 2022年7月30日
343253  LV1 2022年6月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友