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

📄 example.java

📁 仿照WINDOWS的扫雷做的一个小游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
}








class MyWindow extends JFrame implements ActionListener,ItemListener,MouseListener  //搜猪主体窗口
{ 
  JMenuBar menubar;
  JMenu menu1,menu2;
  JMenuItem item1,item2,item3,item4,item5,item6,item7,item8;
  JPanel p1,p2,p3,p1_1;
  JTextField text3,txet4,text1_2;
  JLabel l1;
  Icon icon0,icon1,icon2,icon3,icon4,icon5,icon6,icon7,icon8,icon,icon13;
  ButtonGroup g1=new ButtonGroup();
  BorderLayout bord=new BorderLayout(); 
  JButton c;
  Icon ico1,ico2;
 Border bor2=BorderFactory.createBevelBorder(0); 
 Border bor1=BorderFactory.createLineBorder(Color.gray,1);
 Border bor3=BorderFactory.createBevelBorder(1);
  JButton bu[][];
  JPanel p[][];
  int bj[][],bj2[][],bj3[][],d,m,n,u,q,t,th=0,Dengji;
  int le,qi;static  int dio2B=0;
  MyDialog   dio;
  MyDia   dio1;
  MyDia1 dio2;
  MyDia2 dio3;  
  Bang  bang;
  Font f=new Font("System",Font.BOLD,23);
  Random ran1;
  Thread threa;
   MyWindow(String s,int x,int z,int q1,int dengji) 
{
  super(s);
  Dengji=dengji;
  this.setLayout(null);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setBackground(Color.lightGray);
  dio=new MyDialog(this,"自由设定",true); 
  dio1=new MyDia(this,"挑战失败",true);
  dio2=new MyDia1(this,"剧情",false);
  dio3=new MyDia2(this,"挑战成功",true,Dengji); 
  bang=new Bang(this,"搜猪英雄榜",false);
  setLocation(new Point(100,100));
  q=q1; m=x+2;n=z+2;qi=le=q;
  this.setSize(new Dimension((m-2)*16+30,(n-2)*16+136)); 
  bj=new int[m][n]; 
  bj2=new int[m][n]; 
  bj3=new int[m][n]; 
  bu=new JButton[m][n];
  p=new JPanel[m][n];
  ico1=new ImageIcon("11.jpg");
  ico2=new ImageIcon("12.jpg");
  menubar=new JMenuBar();
  menu1=new JMenu("游戏(G)");
  menu2=new JMenu("帮助(H)");
  item1=new JMenuItem("开局(N)");
  item2=new JRadioButtonMenuItem("初级");
  item3=new JRadioButtonMenuItem("中级");
  item4=new JRadioButtonMenuItem("高级");
  item7=new JRadioButtonMenuItem("自由设定");
  item8=new JMenuItem("捉猪英雄榜");
  item5=new JMenuItem("退出(X)");
  item6=new JMenuItem("关于本人");
  icon0=new ImageIcon("lei.jpg");
  icon1=new ImageIcon("1.jpg");
  icon2=new ImageIcon("2.jpg");
  icon3=new ImageIcon("3.jpg");
  icon4=new ImageIcon("4.jpg");
  icon5=new ImageIcon("5.jpg");
  icon6=new ImageIcon("6.jpg");
  icon7=new ImageIcon("7.jpg");
  icon8=new ImageIcon("uiui.jpg");
  icon=new ImageIcon("12.jpg");
  icon13=new ImageIcon("13.jpg");
   p1=new JPanel();
   p1_1=new JPanel();
   p2=new JPanel();
   p3=new JPanel();
  g1.add(item2);
  g1.add(item3);
  g1.add(item4);
  g1.add(item7);
  menu1.add(item1);
  menu1.addSeparator();
  menu1.add(item2);
  menu1.add(item3);                 
  menu1.add(item4);
  menu1.add(item7);
  menu1.addSeparator();
  menu1.add(item8);
  menu1.addSeparator();
  menu1.add(item5);
  menu2.add(item6);
  menubar.add(menu1); 
  menubar.add(menu2);
  item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));      
  item5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
  this.setJMenuBar(menubar);
   this.add(p3);
   dio2.setVisible(false);
 if(dio2B==0){ dio2B=1;
   dio2.setVisible(true);}
   p1.setLayout(new GridLayout(1,3));
   p3.setLayout(null);
   p2.setLayout(null);
  p3.setBackground(Color.lightGray);
  p2.setBackground(Color.lightGray);
  p1.setBackground(Color.lightGray);
  c=new JButton();
  c.setIcon(ico1);
  c.addActionListener(this);
  if(le>=0&&le<=9) l1=new JLabel(" 00"+le);
  if(le>=10&&le<=99) l1=new JLabel(" 0"+le);
  if(le>=100&&le<=999) l1=new JLabel(" "+le);
  l1.setFont(f);
  l1.setForeground(Color.RED);
  p1_1.add(l1);
  p1.add(p1_1);  
  p1.add(c);
  text1_2=new JTextField("000");
  text1_2.setFont(f);
  text1_2.setForeground(Color.RED);
  p1.add(text1_2); 
  p1.setBorder(bor3);
  p2.setBorder(bor3);
for(int i=0;i<m;i++)
    for(int j=0;j<n;j++)
   {
        p[i][j]=new JPanel(); 
        bu[i][j]=new JButton();
         if(i==0||j==0||i==(m-1)||j==(n-1))  {bj[i][j]=-20;}  
         else{ bu[i][j].setBounds(0,0,16,16); 
            bj[i][j]=0;bj2[i][j]=0;bj3[i][j]=0;
        bu[i][j].addActionListener(this); 
        bu[i][j].addMouseListener(this);      
            }
   }
  p3.setBounds(0,0,(m-2)*16+30,(n-2)*16+136);
  for(int i=1;i<m-1;i++) 
    for(int j=1;j<n-1;j++)
     {
        p[i][j].setBounds(4+(i-1)*16,4+(j-1)*16,16,16); 
        p[i][j].setLayout(null);
        p[i][j].add(bu[i][j]);
        bu[i][j].setBorder(bor2);        
        p2.add(p[i][j]);        
     }
   p1.setBounds(5,5,(m-2)*16+16,45);
   p2.setBounds(8,55,(m-2)*16+8,(n-2)*16+8);
ran1=new Random();
for(int i=0;i<q;)
{ 
  t=ran1.nextInt()%(m-1);
  u=ran1.nextInt()%(n-1);
  if(t>0&&t<m-1)
     if(u>0&&u<n-1)
   {if(bj[t][u]!=-1)
       { bj[t][u]=-1;
      i++;}
  }
}


for(int i=1;i<m-1;i++) 
  for(int j=1;j<n-1;j++)
   {
      if(bj[i][j]!=-1) 
      {
         if(bj[i-1][j-1]==-1) bj[i][j]++;
         if(bj[i-1][j]==-1) bj[i][j]++;
         if(bj[i-1][j+1]==-1) bj[i][j]++;
         if(bj[i][j-1]==-1) bj[i][j]++;
         if(bj[i][j+1]==-1) bj[i][j]++;
         if(bj[i+1][j-1]==-1) bj[i][j]++;
         if(bj[i+1][j]==-1) bj[i][j]++;
         if(bj[i+1][j+1]==-1) bj[i][j]++;
      }    
   }

    p3.add(p2);p3.add(p1);
  item5.addActionListener(this);
  item1.addActionListener(this);
  item8.addActionListener(this);
  item2.addItemListener(this);
  item3.addItemListener(this);
  item4.addItemListener(this);
  item7.addItemListener(this); 
  p3.validate();
  p2.validate();
  p1.validate();
  threa=new Threa(text1_2); 
  validate();
  setVisible(true);
  setResizable(false);
  }






 public void actionPerformed(ActionEvent e)
{
  if (e.getSource()==item1) { 
     dispose();
     this.setVisible(false);
     MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);      
       win.validate();    }                                                    //item1
  if(e.getSource()==item5)
    {
      dispose();
      System.exit(0);
    }                                                                              //item5                                            
  if(e.getSource()==c)
   { 
     dispose();
     this.setVisible(false);
     MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);      
       win.validate();
   }                                                                                //c
  for(int i=1;i<m-1;i++) 
    for(int j=1;j<n-1;j++)
    {
       if(e.getSource()==bu[i][j])
         {if(bj2[i][j]==0){ 
                          if(bj[i][j]==-1)
                               {bj2[i][j]=1; threa.stop();
                                   for(int chang=1;chang<m-1;chang++)    //雷场显示
                                     for(int kuan=1;kuan<n-1;kuan++)
                                           if(bj[chang][kuan]==-1) 
                                         bu[chang][kuan].setIcon(icon0);                              
                                c.setIcon(ico2);
                             dio1.setVisible(true);
        if(dio1.getMessage()==MyDialog.YES)
           { dispose();
            this.setVisible(false);
            MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);      
            win.validate();  
           }
    else    
        if(dio1.getMessage()==MyDialog.NO)
           {  dispose();
             System.exit(0);
           }
              if(dio.getMessage()==MyDialog.CLOSE)
           {  dispose();
            this.setVisible(false);
            MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);      
            win.validate(); 
           } 
                                
                               }
                             else
                                f(i,j ); 
                          }
         }


    }                                                                               //button

if(e.getSource()==item8)
  {
  bang.setVisible(true);
  }                                                                                //item8

}


 public void itemStateChanged(ItemEvent e)                    //等级选择
{   
    if(e.getSource()==item2)
    { dispose(); this.setVisible(false);
     MyWindow win=new MyWindow("捉猪",9,9,10,1);      
       win.validate();} 
    else if(e.getSource()==item3)
    { dispose(); this.setVisible(false);
     MyWindow win=new MyWindow("捉猪",18,18,40,2);      
       win.validate();} 
   else if(e.getSource()==item4)
    { dispose(); this.setVisible(false);
     MyWindow win=new MyWindow("捉猪",36,25,98,3);      
       win.validate();} 
    else if (e.getSource()==item7) {          
        dio.setVisible(true);
        if(dio.getMessage()==MyDialog.YES)
           { m=Integer.parseInt(dio.t1.getText()); 
             n=Integer.parseInt(dio.t2.getText());   
             q=Integer.parseInt(dio.t3.getText()); 	
             dispose();
            this.setVisible(false);
            if(q>m*n) q=(m*n)-2;
            MyWindow win=new MyWindow("捉猪",m,n,q,0);      
            win.validate();  
           }
    else    
        if(dio.getMessage()==MyDialog.NO)
           { dio.setModal(false);
           }
              if(dio.getMessage()==MyDialog.CLOSE)
           {  dio.setModal(false);
           }   
                          }
}

 void f(int i,int j)                                                                   //雷区扫描
{     if(bj2[i][j]==0) 
   {      if(i>0&&j>0&&i<m-1&&j<n-1) {bj2[i][j]=1;bj3[i][j]=1;
         if(bj[i][j]==1) {bu[i][j].setIcon(icon1);}
         else if(bj[i][j]==2) {bu[i][j].setIcon(icon2);}
         else if(bj[i][j]==3) {bu[i][j].setIcon(icon3);}
         else if(bj[i][j]==4) {bu[i][j].setIcon(icon4);}
         else if(bj[i][j]==5) {bu[i][j].setIcon(icon5);}
         else if(bj[i][j]==6) {bu[i][j].setIcon(icon6);}
         else if(bj[i][j]==7) {bu[i][j].setIcon(icon7);}
         else if(bj[i][j]==0) {    
                                   bu[i][j].setBorder(bor1);
                                   bu[i][j].setBackground(Color.darkGray);
            f(i-1,j);  f(i,j-1); f(i,j+1); f(i+1,j);
            if(bj[i-1][j]==0||bj[i][j-1]==0) f(i-1,j-1);
            if(bj[i-1][j]==0||bj[i][j+1]==0) f(i-1,j+1);
            if(bj[i+1][j]==0||bj[i][j-1]==0) f(i+1,j-1);
            if(bj[i][j+1]==0||bj[i+1][j]==0) f(i+1,j+1);
                              }
                                       }
   }
}

public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){
     if(th==0){th=1;threa.start();} 
   for(int i=1;i<m-1;i++) 
    for(int j=1;j<n-1;j++)
    { 
       if(e.getSource()==bu[i][j])
     {  
           if(e.getModifiers()==InputEvent.BUTTON3_MASK)
           {        if(bj3[i][j]==0){     
  if(bu[i][j].getIcon()==icon8) {bu[i][j].setIcon(icon13); }
  else if(bu[i][j].getIcon()==icon13){   qi++;
             if(bj[i][j]==-1) {le++;}
     p1_1.remove(l1);
     if(qi<0) l1=new JLabel("  "+qi+"    ");
     if(qi>=0&&qi<=9) l1=new JLabel(" 00"+qi);
     if(qi>=10&&qi<=99) l1=new JLabel(" 0"+qi);
     if(qi>=100&&qi<=999) l1=new JLabel(" "+qi);
     l1.setFont(f);
      l1.setForeground(Color.RED);
      p1_1.add(l1);      
             bj2[i][j]=0;
             p[i][j].remove(bu[i][j]);
             bu[i][j]=new JButton();
             p[i][j].add(bu[i][j]);
             bu[i][j].setBorder(bor2);  
             bu[i][j].setBounds(0,0,16,16); 
             bu[i][j].addActionListener(this); 
             bu[i][j].addMouseListener(this); 
                                            }
       else {bu[i][j].setIcon(icon8);
               bj2[i][j]=1;qi--;
               if(bj[i][j]==-1) {le--;}
     p1_1.remove(l1);
     if(qi<0) l1=new JLabel("  "+qi+"    ");
     if(qi>=0&&qi<=9) l1=new JLabel(" 00"+qi);
     if(qi>=10&&qi<=99) l1=new JLabel(" 0"+qi);
     if(qi>=100&&qi<=999) l1=new JLabel(" "+qi);
    l1.setFont(f);
  l1.setForeground(Color.RED);
  p1_1.add(l1);              
            } 
                }
         if(le==0&&qi==0){ threa.stop();
                        dio3.shijian.setText(text1_2.getText());           
                        dio3.setVisible(true);       
        if(dio3.getMessage()==MyDia2.YES)
           {    dispose();
            this.setVisible(false);
            MyWindow win=new MyWindow("捉猪",m-2,n-2,q,Dengji);      
            win.validate(); 
            }
                      }
                    
              }
 
     }
    }          

 }                    //mouse


}                                       //class MyWindow


public class Example
{
 public static void main(String args[])
 {
  MyWindow win;
  win=new MyWindow("捉猪",9,9,10,1);
  win.setVisible(true); 
 } 
}

⌨️ 快捷键说明

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