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

📄 bumb.java

📁 这是一个扫雷程序 与windows的扫雷界面相同
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		        b1.addActionListener(this);
		        JButton b2=new JButton("确定");		    		    
		    	b2.addActionListener(this);
		        ta=new JTextArea();
		    	ta.setSize(265,80);
		    	b1.setSize(90,20);
		    	b2.setSize(60,20);
		    	ta.setText(data);		    	
		    	h.add(ta,"North");
		    	h.add(b1);
		    	b1.setLocation(40,80);
		    	b2.setLocation(180,80);
		    	h.add(b2);		    		        
		        h.setVisible(true);		   
		   
		   
		    }
		    
		    
		    if(e.getActionCommand()=="目录(C)        F1")//选择菜单栏中的目录选项来打开目录文件
		    {
		    	try
		    	{		    				    		
		    		Runtime.getRuntime().exec("cmd.exe /c start file//help.chm");
		    	}
		    	catch(IOException f)
		    	{
		    	
		    	}
		    
		    }
		
		    if(e.getActionCommand()=="使用帮助主题(S)...")//选择菜单栏中的使用帮助主题选项
		    {
		    	try
		    	{		    				    		
		    		Runtime.getRuntime().exec("cmd.exe /c start file//help.chm");
		    	}
		    	catch(IOException f)
		    	{
		    	
		    	}
		    
		    }		

		    if(e.getActionCommand()=="使用帮助(H)")//选择菜单栏中的目使用帮助选项来打开帮助文件
		    {
		    	try
		    	{		    				    		
		    		Runtime.getRuntime().exec("cmd.exe /c start file//mine.chm");
		    	}
		    	catch(IOException f)
		    	{
		    	
		    	}
		    
		    }
		    
		    
		    if(e.getActionCommand()=="关于扫雷(A)")
		    {
		    	try
		    	{		    	
		    		Runtime.getRuntime().exec("cmd.exe /c start image//扫雷玩法.bmp");	
		        }
		        catch(IOException f)
		        {
		        
		        }
		    
		     
		    }
		    		
	
	
		}	
//********************************************************************************************//定义结束
	   
	   
//********************************************************************************************//对MouseListener接口进行定义	    
	    public void mouseDragged(MouseEvent e)//鼠标拖动事件
        {
    
        }
    
   	    public void mouseMoved(MouseEvent e)//鼠标移动事件
    	{
    
    	
    	}
    
    	public void mousePressed(MouseEvent e)//鼠标按下事件
    	{    	    		
    		if(e.getButton()==MouseEvent.BUTTON1)
    		{
    			ImageIcon unknown=new ImageIcon("Image/unknown.jpg");//设置左键按下去时label的显示状态
    		    for(int i=0;i<81;i++)
    		    {    		     
    		     	
    		     	if(e.getSource().equals(label[i])&&haveFlag[i]==false)
    		     		label[i].setIcon(unknown); 
    		     		 			    		      
    		    }      
    		
    		   ImageIcon pressed=new ImageIcon("Image/pressed.jpg");//设置左键按下去时标签按钮的显示状态
    		   b.setIcon(pressed);
    		}
    
    	    
    	   if(e.getButton()==MouseEvent.BUTTON3)//鼠标按下右键
    	   {
    	   		
    		    for(int i=0;i<81;i++)
    		    {    		     
    		     	
    		     	if(e.getSource().equals(label[i]))
    		     	{    		     	
    		     		if(haveFlag[i]==false)//该雷还没有插上小旗
    		     		{    		     		    		     		    		     		
    		     			if(sign==false)//假如没有标记的情况
    		     			{
    		     				if(haveSign[i]==true)//在取消标记但是标记仍然存在的情况下
    		     				{
    		     					ImageIcon gray=new ImageIcon("Image/gray.jpg");
    		     					label[i].setIcon(gray);
    		     					haveFlag[i]=false;
    		     					haveSign[i]=false;
    		     				}
    		     				else
    		     				{	
    		     					ImageIcon flag=new ImageIcon("Image/flag.jpg");
    		     					label[i].setIcon(flag);
    		     					String s=label1.getText();    		     		
    		     					int amount=Integer.parseInt(s);
    		     					amount--;
    		     	
    		     					if(amount>=0)
    		        					s="00"+String.valueOf(amount);
    		        				if(amount<0)
    		        				s="-0"+String.valueOf(amount*(-1));
    		        				if(amount<=-10)
    		        	    			s="-"+String.valueOf(amount*(-1));
    		        				label1.setText(s);    		     	
    		                 		haveFlag[i]=true;
    		                    }
    		                 }
    		            
    		                 else //在有标记的情况下
    		                 {
    		                 	if(haveSign[i]==false)//假如有雷上面没有问号
    		                 	{
     		     					ImageIcon flag=new ImageIcon("Image/flag.jpg");
    		     					label[i].setIcon(flag);
    		     					String s=label1.getText();    		     		
    		     					int amount=Integer.parseInt(s);
    		     					amount--;
    		     	
    		     					if(amount>=0)
    		        					s="00"+String.valueOf(amount);
    		        				if(amount<0)
    		        					s="-0"+String.valueOf(amount*(-1));
    		        				if(amount<=-10)
    		        	    			s="-"+String.valueOf(amount*(-1));
    		        				label1.setText(s);    		     	
    		                 		haveFlag[i]=true;   		                 				
    		                 	    haveSign[i]=false;
    		                 	}
    		                    else //假如雷上有问号
    		                    {
    		                    	ImageIcon gray=new ImageIcon("Image/gray.jpg");
    		                    	label[i].setIcon(gray);
    		                    	haveFlag[i]=false;
    		                    	haveSign[i]=false;	
    		                    }
    		                 }
    		            
    		            }
    		            
    		            else //雷上有小旗的情况
    		            {
    		            	if(sign==false)//没有标记时的情况
    		            	{
    		            		ImageIcon gray=new ImageIcon("image/gray.jpg");
    		            		label[i].setIcon(gray);
    		            		String s=label1.getText();
    		            		int amount=Integer.parseInt(s);
    		            		amount++;    		     			  	
    		     			  	s="00"+String.valueOf(amount);
    		        			if(amount==10)
    		        				s="010";
    		        			if(amount<0)
    		        				s="-0"+String.valueOf(amount*(-1));
    		        			if(amount<=-10)
    		        	    		s="-"+String.valueOf(amount*(-1));
    		        			label1.setText(s);     		            	    
    		            	    haveFlag[i]=false;
    		            	
    		            	}
    		                
    		                else //有标记的情况
    		            	{
    		            		ImageIcon qs_up=new ImageIcon("image/qs_up.jpg");
    		            		label[i].setIcon(qs_up);
    		            	    String s=label1.getText();
    		            	    int amount=Integer.parseInt(s);
    		            		amount++;    		     			  	
    		     			  	s="00"+String.valueOf(amount);
    		        			if(amount==10)
    		        				s="010";
    		        			if(amount<0)
    		        				s="-0"+String.valueOf(amount*(-1));
    		        			if(amount<=-10)
    		        	    		s="-"+String.valueOf(amount*(-1));
    		        			label1.setText(s);     		            	    
    		            	    haveFlag[i]=false;
    		            	    haveSign[i]=true;
    		            	}
    		                
    		            
    		            
    		            }
    		            
    		            break;//退出循环
    		        }		 			    		      
    		    }          	   		
    	   
    	   }
    	}

    	public void mouseReleased(MouseEvent e)//鼠标释放事件    
    	{
    		if(e.getButton()==e.BUTTON1)
    		{
    		    			
    			int x=0,y=0,i;
    			int amount=0;//定义一个方格周围的雷的个数
    			for( i=0;i<81;i++)
    			{	
    				if(e.getSource().equals(label[i]))
    		    	{	
    		    		x=i%9;
    		    		y=i/9;    		    
    		    		break;
    	       		}
    	    	}	   			
    	   
    	    	if(haveFlag[i]==true)
    	    	{
    	    		ImageIcon smile=new ImageIcon("image/smile.jpg");
    	    		b.setIcon(smile);	
    	    	}    	    	
    	    	
    	    	
    	    	if(timeThread==null)//启用计时器
    	    	{    	    	
    	    		label2.setText("001");
    	    		timeThread=new Thread(this);
    	    		timeThread.start();	
    	    	}
    	    	
    	    	if(position[y][x]==1&&haveFlag[i]==false) //踩到了地雷
    	    	{
    	   			timeThread.stop();   	   		
    	   			if(haveSound)
    	   			{    	   			
    	 	    		try
    	 	    		{    	 	    		
    	 	    			InputStream in=new FileInputStream("sound/lost.WAV");
    	 	    			AudioStream aslost=new AudioStream(in);
    	   					AudioPlayer.player.start(aslost);
    	   				}
    	   				catch(FileNotFoundException f)
    	   				{
    	   				}
    	   			    catch(IOException g)
    	   			    {
    	   			    }
    	   			}
    	   			
    	   			ImageIcon lost=new ImageIcon("image/lost.jpg");
    	   			b.setIcon(lost);	
    	        	ImageIcon blown=new ImageIcon("image/blown.jpg");
    	        	ImageIcon wrong=new ImageIcon("image/wrong.jpg");
    	        	label[i].setIcon(blown);
    	        	for(int k=0;k<9;k++)
    	        		for(int j=0;j<9;j++)
    	        			{
    	        				if(position[k][j]==1)//判断正确的情况下
    	        				{
    	        					ImageIcon bumb=new ImageIcon("image/bumb.jpg");
    	        					label[k*9+j].setIcon(bumb);	
    	        				}	
    	        			
    	        			    
    	        			 	if(position[k][j]==0&&haveFlag[k*9+j])
    	        			 	{
    	        			 		label[k*9+j].setIcon(wrong);
    	        			 	}
					    	        			
    	        			}

    	        	label[i].setIcon(blown);
    	        	for(int temp=0;temp<81;temp++)//取消监听器
    	        		label[temp].removeMouseListener(this);    	    	
    	    	}
            	if(position[y][x]==0&&haveFlag[i]==false)//没有踩到地雷的情况
            	{            	
            		ImageIcon smile=new ImageIcon("image/smile.jpg");
            		b.setIcon(smile);
                	search(x,y);//探寻该雷周围的情况
            
            	}
    	 	    
			
			//*******************************************************************************//判断扫雷是否扫雷胜利
			
    	 	    
    	 	   int judge[][]=new int[9][9];
    	 	    win=true;
    	 	    for(int k=0;k<9;k++)
    	 	    	for(int j=0;j<9;j++)
    	 	    		{    	 	    		
    	 	    			if(haveFlag[k*9+j])
    	 	    				judge[k][j]=1;
    	 	                 						   
						    else 
						    {
						    	if(isAlive[k][j])	
						    	{
						    		judge[k][j]=2;	
						    	}
						    }
						}

outer:    	 	for(int k=0;k<9;k++)
    	 	    	for(int j=0;j<9;j++)
    	 	    		if(judge[k][j]!=position[k][j])
    	 	             {
    	 	             	win=false;
    	 	             	break outer;	
    	 	             }    	 	       	 	   
    	 	    if(win)//胜利的情况下
    	 	    {    	 	    	
    	 	    	timeThread.stop();
    	 	    	second=time;    	 	    
    	 	    	if(haveSound)
    	 	    	{
    	 	    		try
    	 	    		{
    	 	    			InputStream in=new FileInputStream("sound/win.WAV");
    	 	    			AudioStream aswin=new AudioStream(in);    	 	 
    	 	    			AudioPlayer.player.start(aswin);	
    	 	    		}
    	 	    		catch(FileNotFoundException f)
    	 	    		{
    	 	    		
    	 	    		}
    	 	    		catch(IOException g)
    	 	    		{
    	 	    		
    	 	    		}
    	 	    	
    	 	    	}
    	 	    	ImageIcon win=new ImageIcon("image/win.jpg");
    	 	    	b.setIcon(win);
    	 	        for(int k=0;k<81;k++)    	 	        	
    	 	        	label[k].removeMouseListener(this);		
    	 	    
    	 	    	try
    	 	    	{
    	 	    		BufferedReader bw=new BufferedReader(new FileReader("data.txt"));	
    	 	    		bw.readLine();
    	 	    		int temp=Integer.parseInt(bw.readLine());    	 	    	    	 	    		
    	 	    		if(time<temp)//打破记录
    	 	    		{
    	 	    		    fm=new JFrame("win");    	 	    		
    	 	    			fm.setSize(140,200);
    	 	    			fm.setLayout(null);    	 	    			
    	 	    			JTextArea t1=new JTextArea();
    	 	    			t1.setText("你已经破初级记录\n请输入尊姓大名");
    	 	    			t2=new JTextField("匿名");
    	 	    			t1.setEditable(false);
    	 	    			t1.setSize(200,40);
    	 	    			t2.setEditable(true);      	 	    			
    	 	    			t2.setForeground(Color.CYAN);
    	 	    			t2.setSize(100,20);
    	 	    			fm.setVisible(true);    	 	    		
    	 	    			fm.add(t1);
    	 	    			fm.add(t2);  	 	    		
    	 	    		    t1.setLocation(20,40);
    	 	    		    t2.setLocation(20,80);
    	 	    		    JButton b=new JButton("确定 ");
    	 	    		    b.addActionListener(this);    	 	    		    
    	 	    		    b.setSize(70,20);
    	 	    		    fm.add(b);
    	 	    		    b.setLocation(20,110);
    	 	    		}
    	 	    	
    	 	    	
    	 	    	}//判断是否打破记录
    	 	        catch(FileNotFoundException f)
    	 	        {
    	 	        
    	 	        }
    	 	        catch(IOException f)
    	 	        {
    	 	        
    	 	        }
    	 	        	    	 	        	 	   
    	 	      
    	 	   
    	 	   
    	 	    } 
    	 	  		
			}
			//*******************************************************************************//定义结束    	 	
    	 	
    	 	    	 	
    	 //*******************************************************************************//判断扫雷是否扫雷胜利	
    	 	else
    	 	{
    	 	   int judge[][]=new int[9][9];
    	 	    win=true;
    	 	    for(int k=0;k<9;k++)
    	 	    	for(int j=0;j<9;j++)
    	 	    		{    	 	    		
    	 	    			if(haveFlag[k*9+j])
    	 	    				judge[k][j]=1;
    	 	                 						   
						    else 
						    {
						    	if(isAlive[k][j])	
						    	{
						    		judge[k][j]=2;	
						    	}
						    }
						}

outer:    	 	for(int k=0;k<9;k++)
    	 	    	for(int j=0;j<9;j++)
    	 	    		if(judge[k][j]!=position[k][j])
    	 	             {
    	 	             	win=false;
    	 	             	break outer;	
    	 	             }    	 	   
    	 	    if(win)//胜利的情况下
    	 	    {    	 	    	
    	 	    	
    	 	    	second=time;
    	 	    	timeThread.stop();
    	 	    	if(haveSound)
    	 	    	{
    	 	    		try
    	 	    		{    	 	    		
    	 	    			InputStream in=new FileInputStream("sound/win.WAV");
    	 	    			AudioStream aswin=new AudioStream(in);
    	 	    			AudioPlayer.player.start(aswin);	
    	 	    		}
    	 	    		catch(FileNotFoundException f)
    	 	    		{
    	 	    			
    	 	    		}
    	 	    		catch(IOException g)
    	 	    		{
    	 	    		
    	 	    		}
    	 	    	
    	 	    	try
    	 	    	{
    	 	    		BufferedReader bw=new BufferedReader(new FileReader("data.txt"));	

⌨️ 快捷键说明

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