⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sweeper.java

📁 JAVA 做的扫雷游戏
💻 JAVA
字号:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JComponent;
import java.lang.*;

public class Sweeper extends JFrame {
	private JButton buttons[];
	private JLabel bar;
	private JPanel panel;
	public Icon bug,bug1,bug2,bug3;
	public int number=0;
	private GridLayout layout;
	public Container container;
	public int count=0;
	public int line,column=0;
	public int row,vol;
	public int minenum=0;
	public String string="";
	int flag[][];
	int endingflag=0;
			//System.out.println(arrymine[a][b]);
		


	//public int arry1[][];

    public Sweeper(final int mineArry[][],final int mineCountAround[][],final int test[][],final int totalOfMines) {
    	super("MineSweeper");
    	
    	//this part defines a flag for later mounsEvents
    	 flag =new int [12][12];
    		for(int a=1;a<11;a++)
    			for(int b=1;b<11;b++)
    			    {
    				
    				flag[a][b]=0;
    				}
    	
    	container=getContentPane();
    	bar=new JLabel();
    	bar.setText("Mines remaining:"+totalOfMines);
    	number=totalOfMines;
    	container.add(bar,BorderLayout.NORTH);
    	layout=new GridLayout(10,10);
    	container.setBackground(Color.ORANGE);
    	
    	panel=new JPanel();
    	panel.setLayout(layout);
    	
    	bug=new ImageIcon("37.gif");
    	bug1=new ImageIcon("55.gif");
    	bug2=new ImageIcon("wenhao.gif");
    	bug3=new ImageIcon("wrong.gif");
    	
    	//set the button for gridlayout
    	buttons=new JButton[101];
    	for(count=1;count<=100;count++){
    		buttons[count]=new JButton();
    		panel.add(buttons[count]);
    		buttons[count].addMouseListener(
    			new MouseAdapter(){
    				public void mouseClicked(MouseEvent event){
    					int count1;
    					for(count=1;count<=100;count++){
    						if(event.getSource()==buttons[count]){
    							line=(int)count/10;
    							column=count%10;
    						
    						}   								
    					}
    					if(column==0){
    						//line=line;
    					    column=10;
    					}
    					else
    						line=line+1;
    					row=line;
    					vol=column;
    					//System.out.println(line);
    					//System.out.println(column);
    					if(event.isMetaDown())
    					{
    					  for(count=1;count<=100;count++){
    						if(event.getSource()==buttons[count])	
    						   if((mineArry[line][column]==0||mineArry[line][column]==1)& flag[line][column] ==0){
    							  bar.setText("Mines remaining:"+(--number));
    							  buttons[count].setIcon(bug1);
    							  flag[line][column] =1;
    						   }
    						   else if((mineArry[line][column]==0||mineArry[line][column]==1)&&flag[line][column] ==1){
    							   buttons[count].setIcon(bug2);
    							   bar.setText("Mines remaining"+(++number));
    							   flag[line][column]=2;
    						   }
    						   else if((mineArry[line][column]==0||mineArry[line][column]==1)&&flag[line][column] ==2){
    							   buttons[count].setIcon(null);
    							   flag[line][column]=0;
    						   }
    						}
    					}
    					else
    						for(count=1;count<=100;count++){
    							if(event.getSource()==buttons[count]&flag[line][column]==0){
    								if(mineArry[line][column]==0){
    									for(int c=1;c<=10;c++)
    									   for(int c1=1;c1<=10;c1++){
    										   if(mineArry[c][c1]==0&&flag[c][c1]!=1)
    										       buttons[(c-1)*10+c1].setIcon(bug1);
    										   if(mineArry[c][c1]!=0&&flag[c][c1]==1)
    											   buttons[(c-1)*10+c1].setIcon(bug3);
    										
    									}
    									buttons[count].setIcon(bug);
    									
    									JOptionPane.showMessageDialog(null,"Game Over");
    									System.exit(0);
    								}
    								else{
    									
    									
    								    
    								    findmine(line,column,mineArry,mineCountAround,test,buttons);
                                   
    								}    
    						    }       
    						}
    				}
    			}
    			);
    	}
    	container.add(panel,BorderLayout.CENTER);   	
    	
    	setSize(500,500);
    	setVisible(true);
    }
    public int findmine(int r,int v,int[][] arry1,int[][] arry2,int[][] arry4,JButton but[]){
    	//int temp=0;
    	if(r==0||v==0||r==12||v==12){
    		return 0;
    	}
        if((arry1[r][v]!=0)&&(arry4[r][v]==0))//&&arry2[r][v]==0)
        {
        	
        	if(arry2[r][v]==0){
        		
        		
        		endingflag++;
            	if (endingflag==85){
            		JOptionPane.showMessageDialog(null,"YOU WIN!");
					System.exit(0);
            		
            	}
            	
        		arry4[r][v]=1;
    		    but[(r-1)*10+v].setVisible(false);
    		    findmine(r,v-1,arry1,arry2,arry4,but);
    		    findmine(r-1,v,arry1,arry2,arry4,but);
    		    findmine(r,v+1,arry1,arry2,arry4,but);
    		    findmine(r+1,v,arry1,arry2,arry4,but);
    		    findmine(r-1,v-1,arry1,arry2,arry4,but);
    		    findmine(r-1,v+1,arry1,arry2,arry4,but);
    		    findmine(r+1,v-1,arry1,arry2,arry4,but);
    		    findmine(r+1,v+1,arry1,arry2,arry4,but);
            }
            else{
            	
        	    but[(r-1)*10+v].setText(""+arry2[r][v]+"");
        	
        	  
        	    
        	    switch(arry2[r][v]){
                case 1:  but[(r-1)*10+v].setBackground(Color.green); break;
                case 2:  but[(r-1)*10+v].setBackground(Color.LIGHT_GRAY); break;
                case 3:  but[(r-1)*10+v].setBackground(Color.red);   break;

                case 4:  but[(r-1)*10+v].setBackground(Color.pink);break;
                case 5:  but[(r-1)*10+v].setBackground(Color.blue);
               
                //checking the ending condition 
              
            		
            	}
        	    endingflag++;
            	if (endingflag==85){
            		JOptionPane.showMessageDialog(null,"YOU WIN!");
					System.exit(0);
        	    }
        	    arry4[r][v]=1;
            }
        }
        
     
        return 0;	    
    }  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -