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

📄 clear_bomb.java

📁 一个java扫雷程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		   case 0:
             px = index % 30;
             py = (int)(index / 30);
             free_landmine(px,py);
             break;
           case 9:
             but[index].setIcon(img2);
             game_status = 0;
             start_button.setVisible(false);  
             win_button.setVisible(false);      
             stop_button.setVisible(true);
             replay_button.setVisible(true);
             for(n=0;n<480;n++)
               {  if(n != index && llist[n] == 9)
                    {  but[n].setIcon(img5);}
                  else if(llist[n] != 9 && flag_list[n] == 2)
                    {  but[n].setIcon(img4);}
               }
             break;
           default:
             but[index].setVisible(false);
             lb[index].setVisible(true);
             flag_list[index] = 1;
             break;
        }
     }
   if(bt == 2 && flag_list[index] != 1)  //在该格处按下右键
     {  
		flag_list[index] = 2 - flag_list[index];
        if(flag_list[index] == 0)   //撤销插旗
          {  but[index].setIcon(img0);
             mine=mine+1;
             if((int)p_time/10 == 0)
               {  count1.setText("00" + p_time + " s    " + String.valueOf(mine));}
             else if((int)p_time/100 == 0)
               {  count1.setText("0" + p_time + " s    " + String.valueOf(mine));}
             else {  count1.setText(p_time + " s    " + String.valueOf(mine));}
             for(fg1=0;fg1<=s;fg1++)
               {  if(replay[fg1]==index)
                    {  for(fg2=fg1+1;fg2<=s;fg2++)
                         {  replay[fg2]=replay[fg2-1];
                            vflag[fg2]=vflag[fg2-1];
                            s=s-1;
                         }
                    }
               }
          }
        else {  
			    but[index].setIcon(img1);   //插旗
                mine=mine-1;
                if((int)p_time/10 == 0)
                  {  count1.setText("00" + p_time + " s    " + String.valueOf(mine));}
                else if((int)p_time/100 == 0)
                  {  count1.setText("0" + p_time + " s    " + String.valueOf(mine));}
                else {  count1.setText(p_time + " s    " + String.valueOf(mine));}
                replay[s] = index;
                vflag[s] = 2;
                s++;
             }
     }
   if(check_finish() == false)   //成功结束
     {  game_status = 0;
		load();
        if(p_time < Integer.parseInt(timer3)) 
          {  String title = "Record Broken!";
             JLabel message1 = new JLabel("You have broken the record!");
             JLabel message2 = new JLabel("Please input your name:");
             JTextField nameField = new JTextField();
             // 重新设置菜单的字体
             Font font = new Font(message1.getFont().getName(), Font.PLAIN, 12);
             message1.setFont(font);
             message2.setFont(font);
             nameField.setFont(font);
             JOptionPane.showMessageDialog(null,new Object[] { message1, message2, nameField},title,JOptionPane.INFORMATION_MESSAGE);
             if(p_time < Integer.parseInt(timer1))
               {  name3=name2;
                  timer3=timer2;
                  name2=name1;
                  timer2=timer1;
                  name1=nameField.getText();
                  timer1=String.valueOf(p_time);
               }
             else if(p_time >= Integer.parseInt(timer1) && p_time < Integer.parseInt(timer2))
               {  name3=name2;
                  timer3=timer2;
                  name2=nameField.getText();
                  timer2=String.valueOf(p_time);
                  }
             else {  name3=nameField.getText();
                     timer3=String.valueOf(p_time);
                  }
             save();
             showToplist();
          }
        start_button.setVisible(false);
        stop_button.setVisible(false);
        win_button.setVisible(true); 
        replay_button.setVisible(true);                 
     }
  }

//显示安全区
void free_landmine(int px, int py)
 {  int i;
    i = px + py * 30;
    flag_list[i] = 1;
    but[i].setVisible(false);

    if((px - 1) >= 0 && (py - 1) >= 0) //左上方(-1,-1)
      {  i = (px - 1) + (py - 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px - 1,py - 1);}
           }
      }
    if((py - 1) >= 0) //上方(0,-1)
      {  i = px + (py - 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px,py - 1);}
           }
      }
    if((px + 1) < 30 && (py - 1) >= 0) //右上方(+1,-1)
      {  i = (px + 1) + (py - 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px + 1,py - 1);}
           }
      }
    if((px - 1) >= 0) //左方(-1,0)
      {  i = (px - 1) + py * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px - 1,py);}
           }
      }
    if((px + 1) < 30) //右方(+1,0)
      {  i = (px + 1) + py * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px + 1,py);}
           }
      }
    if((px - 1) >= 0 && (py + 1) < 16) //左下方(-1,+1)
      {  i = (px - 1) + (py + 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px - 1,py + 1);}
           }
      }
    if((py + 1) < 16) //下方(0,+1)
      {  i = px + (py + 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px,py + 1);}
           }
      }
    if((px + 1) < 30 && (py + 1) < 16) //右下方(+1,+1)
      {  i = (px + 1) + (py + 1) * 30;
         if(flag_list[i] == 0)
           {  if(llist[i] != 0)
                {  but[i].setVisible(false);
                   lb[i].setVisible(true);
                   flag_list[i] = 1;
                }
              else  {  free_landmine(px + 1,py + 1);}
           }
      }
 }

//检查是否已经成功完成
public boolean check_finish()
 {  int i,m;
    m = 0;
    boolean flag;
    flag = false;
    for(i=0;i<480;i++)
      {  if(llist[i] == 9 && flag_list[i] != 2)
          {  flag = true;
             break;
          }
         if(llist[i] !=9 && flag_list[i] == 0)
          {  flag = true;
             break;
          }
         if(flag_list[i] == 2)
           {  m++;}
      }
    if(m != 99)
      {  flag = true;} 
    return flag;
 }

//显示扫雷英雄榜
public void showToplist()
 {  load();
    String title = "TopList";
    JLabel message3 = new JLabel("No.1 : "+name1+"  "+timer1+"s");
    JLabel message4 = new JLabel("No.2 : "+name2+"  "+timer2+"s");
    JLabel message5 = new JLabel("No.3 : "+name3+"  "+timer3+"s");
    // 重新设置菜单的字体
    Font font = new Font(message3.getFont().getName(), Font.PLAIN, 12);
    message3.setFont(font);
    message4.setFont(font);
    message5.setFont(font);
    JOptionPane.showMessageDialog(null,new Object[] {message3, message4,message5},title,JOptionPane.INFORMATION_MESSAGE);
 }

//写文件
public void save() 
 {  
	String together;
    try{  FileOutputStream out= new FileOutputStream("toplist.dat");
          byte[] b1=new byte[60];
          together=name1+"\n"+timer1+"\n"+name2+"\n"+timer2+"\n"+name3+"\n"+timer3;
          b1=together.getBytes();
          out.write(b1);
       }
     catch(IOException e) {  System.out.println(e.toString());}	 
 } 
public void saveAS()
 {
	 Label tempText=new Label("Input The File Name:");
	 String inputFilename= JOptionPane.showInputDialog(tempText);
	  
	 try{
		 File saveFil=new File(inputFilename+".frog");
		 saveFil.createNewFile();	 
		 RandomAccessFile saveAs=new RandomAccessFile(saveFil,"rw");
	     saveAs.setLength(0);
	     for (int i=0;i<480;i++)
			 {
				saveAs.writeInt(llist[i]);
				saveAs.writeInt(flag_list[i]);
				saveAs.writeInt(replay[i]);
				saveAs.writeInt(vflag[i]);
			 }
			 saveAs.writeInt(p_time);
		  saveAs.close();
		 
		 
	 }catch(Exception FileNotFoundException){}
	

 }
//读文件
public void load() 
 {  
	try{  FileInputStream in = new FileInputStream("toplist.dat");
          BufferedReader reader=new BufferedReader(new InputStreamReader(in));
          name1=reader.readLine();
          timer1=reader.readLine();
          name2=reader.readLine();
          timer2=reader.readLine();
          name3=reader.readLine();
          timer3=reader.readLine();
       }
    catch(IOException e) {  System.err.println(e);} 
 }



 public void loadAs()
  {
	  this.reset_game();
	  Label tempText=new Label("Input The File Name:");
	  String inputFilename= JOptionPane.showInputDialog(tempText);
	  
      try{
		 
		 RandomAccessFile load=new RandomAccessFile(inputFilename+".frog","r");
	     for (int i=0;i<480;i++)
	     {
	       llist[i] = load.readInt();
		   flag_list[i] = load.readInt();
	       replay[i] = load.readInt();
	       vflag[i] = load.readInt();	
		   lb[i].setText(String.valueOf(llist[i]));
		 }
		 p_time = load.readInt();
		 load.close(); 
		 }catch(Exception FileNotFoundException){};

		 
		 
	  int m1,m2;
	  for (m1=0;m1<480 ;m1++ )
	  {
		  if (flag_list[m1] == 1) 
		  {
			  m2 = 1;
			  flag_list[m1] = 0;
			  mouse(m1,m2);
		  }
		  else if (flag_list[m1] == 2) 
		  {
			  m2 = 2;
			  flag_list[m1] = 0;
			  mouse(m1,m2);
		  }
		  else continue;	
		  lb[m1].setText(String.valueOf(llist[m1]));
		  
		  but[m1].addMouseListener(this);
	  }
	  game_status = 1;

  }
 }

⌨️ 快捷键说明

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