一个有趣的开窗户游戏:</td> </tr> </table>
当你点击游戏界面中的一个正方形按钮时,它周围的正方形按钮的颜色就会发生变化,
当全部正方形按钮的颜色变为一色时,你就胜利了!想试一试吗?请点击这里
它的源代码如下:
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); } }
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主题