Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 423|回复: 0

[Java基础知识]有趣的开窗户游戏

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-2 00:10:00 | 显示全部楼层 |阅读模式
    1. 一个有趣的开窗户游戏:
    2.     当你点击游戏界面中的一个正方形按钮时,它周围的正方形按钮的颜色就会发生变化,
    3. 当全部正方形按钮的颜色变为一色时,你就胜利了!想试一试吗?[url=OpenWindows/OpenWindows.html]请点击这里[/url]
    4.       
    5. [img]http://img.javaxxz.com/2014/10/2/000959062.gif[/img]
    6.       
    7. 它的源代码如下:
    8. import java.awt.*;
    9. import java.awt.event.*;
    10. import javax.swing.*;
    11. class OpenWindows{
    12. public static void main(String[] args){
    13.   JFrame.setDefaultLookAndFeelDecorated(true);
    14.   JFrame frame=new JFrame("开窗户游戏");
    15.   frame.getContentPane().add(new Mainpanel());
    16.   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    17.   frame.pack();
    18.   frame.setVisible(true);
    19. }
    20. }
    21.                      
    复制代码

      

    1. class Mainpanel extends JPanel{
    2. PanelC pc=new PanelC();
    3. PanelS ps=new PanelS(pc);
    4. public Mainpanel(){
    5.   this.setLayout(new BorderLayout());
    6.   this.add(pc,"Center");
    7.   this.add(ps,"South");
    8. }
    9. }
    10. //方块面板
    11. class PanelC extends JPanel{
    12. JButton[] winbutton=new JButton[25];
    13. Color c;
    14. public PanelC(){
    15.    this.setLayout(new GridLayout(5,5));
    16.    for(int i=0;i<25;i++){
    17.      winbutton[i]=new JButton();
    18.      winbutton[i].setActionCommand(String.valueOf(i));
    19.      c=winbutton[i].getBackground();  //获得默认颜色
    20.      winbutton[i].addActionListener(new OpenOther());
    21.      this.add(winbutton[i]);
    22.    }
    23.    this.setPreferredSize(new Dimension(300,300));
    24. }
    25. class OpenOther implements ActionListener{
    26.   public void actionPerformed(ActionEvent a){
    27.    String y=a.getActionCommand();
    28.    int x=Integer.parseInt(y);
    29.    Select(x);
    30.    IsWin();
    31.   }
    32.   //判断九种情况
    33.   private void Select(int x){
    34.    if(x==0){
    35.     ChangeColor(winbutton[x]);
    36.     ChangeColor(winbutton[x+1]);
    37.     ChangeColor(winbutton[x+5]);
    38.    }else if(x>0 && x<4){
    39.     ChangeColor(winbutton[x]);
    40.     ChangeColor(winbutton[x-1]);
    41.     ChangeColor(winbutton[x+1]);
    42.     ChangeColor(winbutton[x+5]);
    43.    }else if(x==4){
    44.     ChangeColor(winbutton[x]);
    45.     ChangeColor(winbutton[x-1]);
    46.     ChangeColor(winbutton[x+5]);
    47.    }else if(x==20){
    48.     ChangeColor(winbutton[x]);
    49.     ChangeColor(winbutton[x-5]);
    50.     ChangeColor(winbutton[x+1]);
    51.    }else if(x==24){
    52.     ChangeColor(winbutton[x]);
    53.     ChangeColor(winbutton[x-5]);
    54.     ChangeColor(winbutton[x-1]);
    55.    }else if(x>20 && x<24){
    56.     ChangeColor(winbutton[x]);
    57.     ChangeColor(winbutton[x-5]);
    58.     ChangeColor(winbutton[x-1]);
    59.     ChangeColor(winbutton[x+1]);
    60.    }else if(x%5==0){
    61.     ChangeColor(winbutton[x]);
    62.     ChangeColor(winbutton[x-5]);
    63.     ChangeColor(winbutton[x+1]);
    64.     ChangeColor(winbutton[x+5]);     
    65.    }else if(x%5==4){
    66.     ChangeColor(winbutton[x]);
    67.     ChangeColor(winbutton[x-5]);
    68.     ChangeColor(winbutton[x-1]);
    69.     ChangeColor(winbutton[x+5]);   
    70.    }else{
    71.     ChangeColor(winbutton[x]);
    72.     ChangeColor(winbutton[x-5]);
    73.     ChangeColor(winbutton[x-1]);
    74.     ChangeColor(winbutton[x+1]);
    75.     ChangeColor(winbutton[x+5]);     
    76.    }   
    77.   }  
    78.   //改变周围颜色函数
    79.   private void ChangeColor(JButton winbutton){
    80.    if(winbutton.getBackground()==c)
    81.     winbutton.setBackground(Color.white);
    82.    else
    83.     winbutton.setBackground(c);
    84.   }
    85.   //判断是否胜出
    86.   private void IsWin(){
    87.    int a=1;
    88.    for(int i=0;i< 25;i++)
    89.     if(winbutton[i].getBackground()==Color.white)
    90.      a++;
    91.    if(a>25)
    92.     JOptionPane.showMessageDialog(null,"恭喜过关");
    93.   }
    94. }
    95. }
    96. class PanelS extends JPanel{
    97. JLabel label=new JLabel("开窗户游戏");
    98. JButton restart=new JButton("重置");
    99. PanelC pc;
    100. public PanelS(PanelC pc){
    101.   this.pc=pc;
    102.   restart.addActionListener(new Reset());
    103.   this.add(label);
    104.   this.add(restart);
    105. }
    106. class Reset implements ActionListener{
    107.   public void actionPerformed(ActionEvent a){
    108.    for(int i=0;i< 25;i++){
    109.     pc.winbutton[i].setBackground(pc.c);
    110.    }
    111.   }
    112. }
    113. }
    复制代码


      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/2/000959203.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-27 05:54 , Processed in 0.290663 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表