站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题有趣的开窗户游戏

有趣的开窗户游戏

摘要: 有趣的开窗户游戏

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="190" height="86" align="center" valign="top"> </td> <td width="494" valign="top">
一个有趣的开窗户游戏:

当你点击游戏界面中的一个正方形按钮时,它周围的正方形按钮的颜色就会发生变化,
当全部正方形按钮的颜色变为一色时,你就胜利了!想试一试吗?请点击这里






它的源代码如下:
import java.awt.*; import java.awt.event.*; import javax.swing.*; class OpenWindows{ public static void main(String[] args){ JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame=new JFrame("开窗户游戏"); frame.getContentPane().add(new Mainpanel()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }
</td> </tr> </table>

class Mainpanel extends JPanel{

 PanelC pc=new PanelC();

 PanelS ps=new PanelS(pc);

 public Mainpanel(){

  this.setLayout(new BorderLayout());

  this.add(pc,"Center");

  this.add(ps,"South");

 }

}

//方块面板

class PanelC extends JPanel{

 JButton[] winbutton=new JButton[25];

 Color c;

 public PanelC(){

   this.setLayout(new GridLayout(5,5));

   for(int i=0;i<25;i++){

     winbutton[i]=new JButton();

     winbutton[i].setActionCommand(String.valueOf(i));

     c=winbutton[i].getBackground();  //获得默认颜色

     winbutton[i].addActionListener(new OpenOther());

     this.add(winbutton[i]);

   }

   this.setPreferredSize(new Dimension(300,300));

 }

 class OpenOther implements ActionListener{

  public void actionPerformed(ActionEvent a){

   String y=a.getActionCommand();

   int x=Integer.parseInt(y);

   Select(x);

   IsWin();

  }

  //判断九种情况

  private void Select(int x){

   if(x==0){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x+1]);

    ChangeColor(winbutton[x+5]);

   }else if(x>0 && x<4){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-1]);

    ChangeColor(winbutton[x+1]);

    ChangeColor(winbutton[x+5]);

   }else if(x==4){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-1]);

    ChangeColor(winbutton[x+5]);

   }else if(x==20){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x+1]);

   }else if(x==24){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x-1]);

   }else if(x>20 && x<24){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x-1]);

    ChangeColor(winbutton[x+1]);

   }else if(x%5==0){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x+1]);

    ChangeColor(winbutton[x+5]);    

   }else if(x%5==4){

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x-1]);

    ChangeColor(winbutton[x+5]);   

   }else{

    ChangeColor(winbutton[x]);

    ChangeColor(winbutton[x-5]);

    ChangeColor(winbutton[x-1]);

    ChangeColor(winbutton[x+1]);

    ChangeColor(winbutton[x+5]);    

   }  

  } 

  //改变周围颜色函数

  private void ChangeColor(JButton winbutton){

   if(winbutton.getBackground()==c)

    winbutton.setBackground(Color.white);

   else

    winbutton.setBackground(c);

  }

  //判断是否胜出

  private void IsWin(){

   int a=1;

   for(int i=0;i< 25;i++)

    if(winbutton[i].getBackground()==Color.white)

     a++;

   if(a>25)

    JOptionPane.showMessageDialog(null,"恭喜过关");

  }

 }

}

class PanelS extends JPanel{

 JLabel label=new JLabel("开窗户游戏");

 JButton restart=new JButton("重置");

 PanelC pc;

 public PanelS(PanelC pc){

  this.pc=pc;

  restart.addActionListener(new Reset());

  this.add(label);

  this.add(restart);

 }

 class Reset implements ActionListener{

  public void actionPerformed(ActionEvent a){

   for(int i=0;i< 25;i++){

    pc.winbutton[i].setBackground(pc.c);

   }

  }

 }

}

</td> </tr> <tr>


↑返回目录
前一篇: 用java API制作可执行JAR文件
后一篇: 10个java主题