黑马程序员技术交流社区

标题: 开灯小游戏 [打印本页]

作者: 罗韬    时间: 2015-4-25 23:19
标题: 开灯小游戏
package com.gz.game;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Game {

        // 定义数组存储按钮
        static JButton[] jbt = new JButton[25];
       
        //定义变量存储图片路径
        static String Url="";

        /**
         * @param 开灯游戏
         */
        public static void main(String[] args) {
                //创建音乐对象
                GameSound  gs = new GameSound();
                //调用播放方法
                gs.playBgSound("music/shuang.mp3");
               
                // 1.创建窗体对象
                JFrame jf = new JFrame();
                // 1.2设置大小
                jf.setSize(300, 400);
                // 1.3设置居中 null
                jf.setLocationRelativeTo(null);
                // 1.4设置标题
                jf.setTitle("开灯游戏1.2");
               
                //关闭窗体结束程序
                jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                /********* 游戏开始需要的组件 *******/
                // 2.得到游戏需要的组件
                // 2.1创建按钮组件和文本组件
                JButton jb = new JButton("开始");
                JLabel jlstart = new JLabel("重新开始");
               
                //给开始添加事件
                jb.addActionListener(new ActionListener() {
                       
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
                                for (int i = 0; i < jbt.length; i++) {
                                        jbt[i].setIcon(new ImageIcon("src/img/1.png"));
                                }
                        }
                });

                // 2.2创建面板组件
                JPanel jpup = new JPanel(); // 分为上面板
                JPanel jpdown = new JPanel(); // 分为下面板

                /********** 在面板添加25个按钮 ********/
                // 3.设置面板布局
                jpup.setLayout(new GridLayout(5, 5));

                // 2.3添加25个按钮 ...
                for (int i = 0; i < 25; i++) {
                        jbt[i] = new JButton(new ImageIcon("./src/img/1.png"));

                        // 通过内部类属性得到id
                        jbt[i].setActionCommand(String.valueOf(i));

                        // 得到图片路径
                        Url =jbt[i].getIcon().toString();

                        // 监听事件 处理图片点击
                        jbt[i].addActionListener(new ActionListener() {

                                public void actionPerformed(ActionEvent e) {
                                        // 得到下标
                                        int num = Integer.valueOf(e.getActionCommand());

                                        if (num == 0) {
                                                // 根据下标改变图片
                                                chages(jbt[num]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num == 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num == 20) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                        } else if (num == 24) {

                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num - 5]);
                                        } else if (num > 0 && num < 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num > 20 && num < 24) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num - 5]);
                                        } else if (num % 5 == 0) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                        } else if (num % 5 == 4) {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num - 1]);
                                                chages(jbt[num + 5]);
                                        } else {
                                                chages(jbt[num]);
                                                chages(jbt[num - 5]);
                                                chages(jbt[num + 1]);
                                                chages(jbt[num + 5]);
                                                chages(jbt[num - 1]);
                                        }

                                }
                        });
                        // 添加按钮到面板
                        jpup.add(jbt[i]);
                }

                // 2.4添加组件到窗体中e
                jpdown.add(jb); // 添加开始按钮
                jpdown.add(jlstart); // 添加文本文字

                // 2.5.将布局的面板添加到窗体进行显示
                jf.add("South", jpdown); // 添加上面板
                jf.add(jpup); // 添加下面板

                // 1.5显示窗体
                jf.setVisible(true);

        }

        // 定义改变图片的方法
        public static void chages(JButton jb) {
       
                // 判断图片标识
                if (jb.getIcon().toString().equals(Url)) {
                        jb.setIcon(new ImageIcon("./src/img/2.png"));
               
                } else {
                        jb.setIcon(new ImageIcon("./src/img/1.png"));
                       
                }
        }

}
作者: 鸡脑壳    时间: 2015-4-25 23:47
看不懂。。。
这是学到哪里了???
给点提示吧。。。
作者: shield    时间: 2015-4-26 14:07
给楼主赞一个
作者: 殃金咒    时间: 2015-4-26 15:52
不明觉厉
作者: 大西洋    时间: 2015-4-26 16:19
这用到了 awt 和 swing,属于 GUI 这块,图形用户界面~

Android上不知是否会用到呢??
作者: bboyXiaoNuo    时间: 2015-5-13 21:18
咱这课程不是不讲GUI吗?
作者: Cat    时间: 2015-5-13 21:38
学习一下~
作者: w401634075    时间: 2015-5-13 21:47
大神,我能求点分吗???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2