前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java实现扫雷小游戏三

Java实现扫雷小游戏三

作者头像
XG.孤梦
发布2022-05-27 09:56:17
3.4K0
发布2022-05-27 09:56:17
举报
文章被收录于专栏:日志随记

接下来是完成菜单栏的功能

游戏菜单

添加菜单监听器(com.panel/BombJMenuBar.java)

在init()方法中插入

代码语言:javascript
复制
// 开局事件处理
        menuItemStart.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                mainframe.reStartGame();
                
            }
        });
        
        // 添加事件监听器
        MenuListener listener = new MenuListener(mainframe);
        menuItemStart.addActionListener(listener);
        menuItemLow.addActionListener(listener);
        menuItemMid.addActionListener(listener);
        menuItemHigh.addActionListener(listener);
        menuItemOrder.addActionListener(listener);
        
        menuHeroLow.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                new Hero(mainframe);
        }});
        menuHeroMid.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                new Hero1(mainframe);
        }});
        menuHeroHigh.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                new Hero2(mainframe);
        }});
        
        menuItemAbout.addActionListener(listener);
        
        // 后门外挂方便测试
        menuItemHole.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                
            }
        });
        
        menuItemExit.addActionListener(new ActionListener() {    //加一个系统退出的处理监听
            public void actionPerformed(ActionEvent e) {
                System.exit(0);

            }
        });
编写等级菜单监听类(com.listener/MenuListener)
代码语言:javascript
复制
// 等级菜单监听器
public class MenuListener implements ActionListener {
    JMenuItem jMenuItem;

    JTextField jTextField=new JTextField();
    MainFrame mainframe;
    
    public MenuListener(MainFrame mainframe){
        this.mainframe = mainframe;
        
    }
    
    
public void actionPerformed(ActionEvent e) {
        
        if(e.getActionCommand().equals("开局(N)")){
            this.mainframe.reStartGame();
        }
        if(e.getActionCommand().equals("初级(B)")){
                Tools.rows = 9;
                Tools.cols = 9;
                Tools.allcount = 10;
                Tools.currentLevel = Tools.LOWER_LEVEL;
                this.mainframe.reStartGame();
        }
        if(e.getActionCommand().equals("中级(I)")){

                Tools.rows = 16;
                Tools.cols = 16;
                Tools.allcount = 40;
                Tools.currentLevel = Tools.MIDDLE_LEVEL;
                this.mainframe.reStartGame();
            }
        if(e.getActionCommand().equals("高级(E)")){
                    Tools.rows = 16;
                    Tools.cols = 30;
                    Tools.allcount = 99;
                    Tools.currentLevel = Tools.HEIGHT_LEVEL;
                    this.mainframe.reStartGame();
                }
         if(e.getActionCommand().equals("自定义(C)")){
                     new UserDefined(mainframe);

                }
         if(e.getActionCommand().equals("关于扫雷(A)")){
                 new About(mainframe);
            }
         }
}

注意:在雷区BombJPanel.java中之前是把行和列写成固定的,实现初级、中级、高级时要进行下述修改:

代码语言:javascript
复制
//    MineLabel[][] labels = new MineLabel[9][9];
    MineLabel[][] labels = new MineLabel[Tools.rows][Tools.cols];

运行效果

自定义菜单项(com.dialog/UserDefined.java)

需求分析:出现弹窗界面,数据校验不能超过三位,只能为数字。

通过继承JDialog实现用户自定义对话框

代码语言:javascript
复制
public class UserDefined  extends JDialog {
    // 自定义
    private static final long serialVersionUID = 1L;

    private JLabel jLabelHigh = new JLabel("高度: ");
    private JLabel jLabelWide = new JLabel("宽度: ");
    private JLabel jLabelBomb = new JLabel("雷数: ");
    private JLabel jLabelMessage = new JLabel("    ");

    private JTextField jTextFieldHigh;
    private JTextField jTextFieldWide;
    private JTextField jTextFieldBomb;

    private JPanel panel;
    private JButton buttonSure;
    private JButton buttonCancer;
    MainFrame mainFrame;

    public UserDefined(final MainFrame mainFrame) {

        super(mainFrame);
        this.mainFrame = mainFrame;
        this.setIconImage(Tools.getImageIcon().getImage());
        jLabelMessage.setFont(new Font("楷书", Font.PLAIN, 12));
        jLabelMessage.setForeground(Color.red);
        this.setTitle("自定义雷区");
        this.add(getPanel());
        this.add(jLabelMessage, BorderLayout.NORTH);
        this.setSize(new Dimension(200, 150));
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setResizable(false);

        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowDeactivated(WindowEvent e) {

                mainFrame.reStartGame();
            }

        });
        this.setModal(true);
        this.setVisible(true);

    }

    public JPanel getPanel() {
        JPanel jPanel = new JPanel();

        Border border1 = BorderFactory.createEmptyBorder(5, 20, 5, 5);
        panel = new JPanel();
        panel.setLayout(new GridLayout(1, 2));
        Box boxHigh = Box.createHorizontalBox();
        jTextFieldHigh = new JTextField(Tools.rows + "");
        jTextFieldHigh.setPreferredSize(new Dimension(30, 20));
        jTextFieldHigh.addKeyListener(new KeyListener() {

            @Override
            public void keyReleased(KeyEvent e) {
                String text = jTextFieldHigh.getText();

                Pattern pattern = Pattern.compile("^[0-9]{1,3}$");
                Matcher matcher = pattern.matcher(text);
                if (!matcher.matches()) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    if (text.length() > 3) {
                        jTextFieldHigh.setText(text.substring(0, 3));
                    }

                }

            }

            @Override
            public void keyTyped(KeyEvent e) {

                char ch = e.getKeyChar();
                if ((ch < '0') || (ch > '9')) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    e.setKeyChar((char) 8);
                } else {
                    jLabelMessage.setText("    ");

                }

            }

            @Override
            public void keyPressed(KeyEvent e) {

            }
        });

        boxHigh.add(jLabelHigh);
        boxHigh.add(jTextFieldHigh);

        Box boxWide = Box.createHorizontalBox();
        jTextFieldWide = new JTextField(Tools.cols + "");
        jTextFieldWide.setPreferredSize(new Dimension(30, 20));
        jTextFieldWide.addKeyListener(new KeyListener() {

            @Override
            public void keyReleased(KeyEvent e) {
                String text = jTextFieldWide.getText();

                Pattern pattern = Pattern.compile("^[0-9]{1,3}$");
                Matcher matcher = pattern.matcher(text);
                if (!matcher.matches()) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    if (text.length() > 3) {
                        jTextFieldWide.setText(text.substring(0, 3));
                    }

                }

            }

            @Override
            public void keyTyped(KeyEvent e) {

                char ch = e.getKeyChar();
                if ((ch < '0') || (ch > '9')) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    e.setKeyChar((char) 8);
                } else {
                    jLabelMessage.setText("    ");

                }
            }

            @Override
            public void keyPressed(KeyEvent e) {

            }
        });
        boxWide.add(jLabelWide);
        boxWide.add(jTextFieldWide);

        Box boxBomb = Box.createHorizontalBox();
        jTextFieldBomb = new JTextField(Tools.bombCount + "");
        jTextFieldBomb.setPreferredSize(new Dimension(30, 20));
        jTextFieldBomb.addKeyListener(new KeyListener() {

            @Override
            public void keyReleased(KeyEvent e) {
                String text = jTextFieldBomb.getText();

                Pattern pattern = Pattern.compile("^[0-9]{1,3}$");
                Matcher matcher = pattern.matcher(text);
                if (!matcher.matches()) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    if (text.length() > 3) {
                        jTextFieldBomb.setText(text.substring(0, 3));
                    }
                }
            }

            @Override
            public void keyTyped(KeyEvent e) {

                char ch = e.getKeyChar();
                if ((ch < '0') || (ch > '9')) {
                    jLabelMessage.setText("请输入数字,不能超过三位");
                    e.setKeyChar((char) 8);
                } else {
                    jLabelMessage.setText("    ");
                }
            }

            @Override
            public void keyPressed(KeyEvent e) {
            }
        });
        boxBomb.add(jLabelBomb);
        boxBomb.add(jTextFieldBomb);

        Box boxS = new Box(BoxLayout.Y_AXIS);
        boxS.add(boxHigh);
        boxS.add(Box.createVerticalStrut(8));
        boxS.add(boxWide);
        boxS.add(Box.createVerticalStrut(8));
        boxS.add(boxBomb);
        boxS.add(Box.createVerticalStrut(8));
        boxS.setBorder(border1);
        Box boxT = new Box(BoxLayout.Y_AXIS);
        buttonSure = new JButton("确定");

        UserDefinedListener definedListener = new UserDefinedListener(this, mainFrame);
        buttonSure.setPreferredSize(new Dimension(70, 30));
        buttonSure.setMargin(new Insets(0, 2, 0, 2));
        buttonSure.addActionListener(definedListener);

        buttonCancer = new JButton("取消");
        buttonCancer.setMargin(new Insets(0, 2, 0, 2));
        buttonCancer.setSize(new Dimension(70, 30));
        buttonCancer.addActionListener(definedListener);
        boxT.add(buttonSure);
        boxT.add(Box.createVerticalStrut(25));
        boxT.add(buttonCancer);
        boxT.setBorder(border1);
        panel.add(boxS);
        panel.add(boxT);

        Border border = BorderFactory.createEmptyBorder(3, 15, 5, 15);
        jPanel.setBorder(border);
        jPanel.add(panel);
        return jPanel;
    }
}
自定义窗口监听器(com.listener/UserDefinedListener.java)
代码语言:javascript
复制
public class UserDefinedListener implements ActionListener {
    
    UserDefined userDefined;

    MainFrame mainFrame;

    public UserDefinedListener(UserDefined userDefined, MainFrame mainFrame) {
        this.mainFrame = mainFrame;
        this.userDefined = userDefined;

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == userDefined.getButtonCancer()) {
            userDefined.dispose();
            mainFrame.reStartGame();
        } else if (e.getSource() == userDefined.getButtonSure()) {
            String highT = userDefined.getjTextFieldHigh().getText();
            Pattern pattern = Pattern.compile("^[0-9]{1,3}$");
            Matcher matcher = pattern.matcher(highT);
            int row = 0;
            if (!matcher.matches()) {
                userDefined.getjLabelMessage()
                        .setText("输入的行数范围应在9-30之间");
                return;
            } else {
                row = Integer.parseInt(highT);
                if (row < 9 || row > 30) {
                    userDefined.getjLabelMessage().setText(
                            "输入的行数范围应在9-30之间");
                    return;
                }

            }
            String colT = userDefined.getjTextFieldWide().getText();
            int col = 0;
            try {
                col = Integer.parseInt(colT);
                if (col < 9 || col > 30) {
                    userDefined.getjLabelMessage().setText(
                            "输入的列数范围应在9-30之间");
                    return;
                }
            } catch (Exception e2) {
                userDefined.getjLabelMessage().setText(
                        "列数应该为数字且范围应在9-30之间");
                return;
            }

            String mineT = userDefined.getjTextFieldBomb().getText();
            int mine = 0;
            try {
                mine = Integer.parseInt(mineT);
                if (mine < 10) {
                    mine = 10;
                } else {
                    mine = Math.min(mine, Tools.rows * Tools.cols * 4 / 5);
                }
            } catch (Exception e3) {
                userDefined.getjLabelMessage().setText("雷数应该为数字");
                return;
            }
            userDefined.dispose();
            Tools.rows = row;
            Tools.cols = col;
            Tools.allcount = mine;

            mainFrame.reStartGame();
        }
    }
}

运行效果

英雄榜

弹出胜利窗口(com.dialog/Win.java)
代码语言:javascript
复制
public class Win extends JDialog {
    MainFrame mainframe;
    private JTextField text;
    TreeSet<Own> LOWER = new TreeSet<Own>();
    TreeSet<Own> MIDDLE = new TreeSet<Own>();
    TreeSet<Own> HEIGHT = new TreeSet<Own>();
    
    public Win(MainFrame mainframe){
        this.mainframe = mainframe;
        this.setIconImage(Tools.getImageIcon().getImage());
        this.setTitle("扫雷成功");
        this.setLocationRelativeTo(null);
        this.setSize(200, 150);
        this.init();
        this.setVisible(true);
    }

    private void init() {
        // 存放记入
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(4,1));
        JLabel label = new JLabel("好厉害!请留下你的大名");
        
        panel.add(label);
        
        text = new JTextField();
        panel.add(text);
//        times = mainframe.getTimer().getTimes();
        JLabel labTime = new JLabel("你所使用的时间:"+Tools.timecount);
        panel.add(labTime);
        
        JButton butys = new JButton("保存");
        butys.addActionListener(new ActionListener() {    
            @Override
            public void actionPerformed(ActionEvent e) {

                if(Tools.currentLevel.equals("初级")){
                    if(Tools.time1>=Tools.timecount && Tools.time2>=Tools.timecount && Tools.time3>=Tools.timecount){
                        Tools.time3 = Tools.time2;
                        Tools.name3 = Tools.name2;
                        Tools.time2 = Tools.time1;
                        Tools.name2 = Tools.name1;
                        
                        Tools.time1 = Tools.timecount;
                        Tools.name1=text.getText();
                        
                    }else if(Tools.time2>=Tools.timecount && Tools.time3>=Tools.timecount && Tools.time1<=Tools.timecount){
                        Tools.time3 = Tools.time2;
                        Tools.name3 = Tools.name2;
                        
                        Tools.time2 = Tools.timecount;
                        Tools.name2=text.getText();
                        
                    }else if(Tools.time3>=Tools.timecount && Tools.time1<=Tools.timecount && Tools.time2<=Tools.timecount){
                        Tools.time3 = Tools.timecount;
                        Tools.name3=text.getText();
                    }
                }
                if(Tools.currentLevel.equals("中级")){                
                    if(Tools.time01>=Tools.timecount && Tools.time02>=Tools.timecount && Tools.time03>=Tools.timecount){
                        Tools.time03 = Tools.time02;
                        Tools.name03 = Tools.name02;
                        Tools.time02 = Tools.time01;
                        Tools.name02 = Tools.name01;
                        
                        Tools.time01 = Tools.timecount;
                        Tools.name01=text.getText();
                        
                    }else if(Tools.time02>=Tools.timecount && Tools.time03>=Tools.timecount && Tools.time01<=Tools.timecount){
                        Tools.time03 = Tools.time02;
                        Tools.name03 = Tools.name02;
                        
                        Tools.time02 = Tools.timecount;
                        Tools.name02=text.getText();
                        
                    }else if(Tools.time03>=Tools.timecount && Tools.time01<=Tools.timecount && Tools.time02<=Tools.timecount){
                        Tools.time03 = Tools.timecount;
                        Tools.name03=text.getText();
                    }
                }
                if(Tools.currentLevel.equals("高级")){                
                    if(Tools.time001>=Tools.timecount && Tools.time002>=Tools.timecount && Tools.time003>=Tools.timecount){
                        Tools.time003 = Tools.time002;
                        Tools.name003 = Tools.name002;
                        Tools.time002 = Tools.time001;
                        Tools.name002 = Tools.name001;
                        
                        Tools.time001 = Tools.timecount; 
                        Tools.name001=text.getText();
                        
                    }else if(Tools.time002>=Tools.timecount && Tools.time003>=Tools.timecount && Tools.time001<=Tools.timecount){
                        Tools.time003 = Tools.time002;
                        Tools.name003 = Tools.name002;
                        
                        Tools.time002 = Tools.timecount;
                        Tools.name002=text.getText();
                        
                    }else if(Tools.time003>=Tools.timecount && Tools.time001<=Tools.timecount && Tools.time002<=Tools.timecount){
                        Tools.time003 = Tools.timecount;
                        Tools.name003=text.getText();
                    }
                }
                Win.this.dispose();
            }
        });
        panel.add(butys);
        this.add(panel);
    }
    public JTextField getText() {
        return text;
    }

运行效果:

英雄榜类(com.dialog/Hero.java)

英雄榜分为初级、中级、高级英雄榜;每个英雄榜类逻辑是一样的,通过胜利窗口的事件监听器判断是哪个等级的英雄榜数据,然后写入临时变量中保存。以此类推编写中级、高级英雄榜Hero1,Hero2,当然也可以只写一个类,不过需要多加一些判断条件。

代码语言:javascript
复制
public class Hero extends JDialog{
        private JLabel jlabel1;    
        private JLabel jlabel2;
        private JLabel jlabel3;
        private JLabel jlabel4;
        private JLabel jlabel5;
        private JLabel jlabel6;
        private JLabel time1;
        private JLabel time2;
        private JLabel time3;
        private JLabel name1;
        private JLabel name2;
        private JLabel name3;
        private JButton jbutton1;
        private JButton jbutton2;
        private MainFrame mainframe;
        private JPanel jpanel;
        
        public Hero(MainFrame mainframe) {
            this.mainframe=mainframe;
            this.setIconImage(Tools.getImageIcon().getImage());
            this.setTitle("初级英雄榜");
            this.setVisible(true);
            this.setSize(220,220);
            this.setResizable(false);
            this.setLocationRelativeTo(mainframe);
            this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            init();
        }
        public JLabel getJLabel1() {
            return jlabel1;
        }
        public void setJLabel1(JLabel jlabel1) {
            this.jlabel1 = jlabel1;
        }
        public JLabel getJLabel2() {
            return jlabel2;
        }
        public void setJLabel2(JLabel jlabel2) {
            this.jlabel2 = jlabel2;
        }
        public JLabel getJLabel3() {
            return jlabel3;
        }
        public void setJLabel3(JLabel jlabel3) {
            this.jlabel3 = jlabel3;
        }
        public JLabel getJLabel4() {
            return jlabel4;
        }
        public void setJLabel4(JLabel jlabel4) {
            this.jlabel4 = jlabel4;
        }
        public JLabel getJLabel5() {
            return jlabel5;
        }
        public void setJLabel5(JLabel jlabel5) {
            this.jlabel5 = jlabel5;
        }
        public JLabel getJLabel6() {
            return jlabel6;
        }
        public void setJLabel6(JLabel jlabel6) {
            this.jlabel6 = jlabel6;
        }
        public JLabel getTime1() {
            return time1;
        }
        public void setTime1(JLabel time1) {
            this.time1 = time1;
        }
        public JLabel getTime2() {
            return time2;
        }
        public void setTime2(JLabel time2) {
            this.time2 = time2;
        }
        public JLabel getTime3() {
            return time3;
        }
        public void setTime3(JLabel time3) {
            this.time3 = time3;
        }
        public JLabel getName1() {
            return name1;
        }
        public void setName1(JLabel name1) {
            this.name1 = name1;
        }
        public JLabel getName2() {
            return name2;
        }
        public void setName2(JLabel name2) {
            this.name2 = name2;
        }
        public JLabel getName3() {
            return name3;
        }
        public void setName3(JLabel name3) {
            this.name3 = name3;
        }
        public void init(){
            HeroListener heroListener = new HeroListener();
            jlabel1 = new JLabel(" 名次");
            jlabel2 = new JLabel(" 成绩");
            jlabel3 = new JLabel(" 玩家");
            jlabel4 = new JLabel(" 第一名:");
            jlabel5 = new JLabel(" 第二名:");
            jlabel6 = new JLabel(" 第三名:");
            time1 = new JLabel(""+Tools.time1);
            time2 = new JLabel(""+Tools.time2);
            time3 = new JLabel(""+Tools.time3);
            name1 = new JLabel(" "+Tools.name1);
            name2 = new JLabel(" "+Tools.name2);
            name3 = new JLabel(" "+Tools.name3);
            jbutton1=new JButton("确定");
            jbutton1.addActionListener(heroListener);
            jbutton2=new JButton("重新设置");
            jbutton2.addActionListener(heroListener);
            jpanel=new JPanel();
            Box box1 = Box.createVerticalBox();
            box1.add(jlabel1);
            box1.add(Box.createVerticalStrut(10));
            box1.add(jlabel4);
            box1.add(Box.createVerticalStrut(10));
            box1.add(jlabel5);
            box1.add(Box.createVerticalStrut(10));
            box1.add(jlabel6);
            Box box2 = Box.createVerticalBox();
            box2.add(jlabel2);
            box2.add(Box.createVerticalStrut(10));
            box2.add(time1);
            box2.add(Box.createVerticalStrut(10));
            box2.add(time2);
            box2.add(Box.createVerticalStrut(10));
            box2.add(time3);
            Box box3 = Box.createVerticalBox();
            box3.add(jlabel3);
            box3.add(Box.createVerticalStrut(10));
            box3.add(name1);
            box3.add(Box.createVerticalStrut(10));
            box3.add(name2);
            box3.add(Box.createVerticalStrut(10));
            box3.add(name3);
            Box box4 = Box.createHorizontalBox();
            box4.add(jbutton1);
            box4.add(Box.createHorizontalStrut(20));
            box4.add(jbutton2);
            Box box5 = Box.createHorizontalBox();
            box5.add(box1);
            box5.add(box2);
            box5.add(box3);
            Box box6 = Box.createVerticalBox();
            box6.add(Box.createVerticalStrut(20));
            box6.add(box5);
            box6.add(Box.createVerticalStrut(20));
            box6.add(box4);
            jpanel.add(box6);
            this.add(jpanel);
        }
        class HeroListener implements ActionListener{
            public void actionPerformed(ActionEvent e){
                String command = e.getActionCommand();
                if(command.equals("确定")){
                    dispose();
                }
                else {
                    Tools.time1 = 999;
                    Tools.time2 = 999;
                    Tools.time3 = 999;
                    Tools.name1 = " 匿名";
                    Tools.name2 = " 匿名";
                    Tools.name3 = " 匿名";            
                    time1.setText(""+Tools.time1);
                    name1.setText(Tools.name1);                
                    time2.setText(""+Tools.time2);
                    name2.setText(Tools.name2);            
                    time3.setText(""+Tools.time3);
                    name3.setText(Tools.name3);
                    //dispose();
                }
            }
        }
    }

运行效果

帮助菜单

关于扫雷(com.dialog/About.java)

可以根据自己的需求添加想要的窗口内容。

代码语言:javascript
复制
public class About extends JDialog {
    
    MainFrame mainframe;
    
    public About(MainFrame mainframe){
        this.setIconImage(Tools.getImageIcon().getImage());
        this.mainframe = mainframe;
        this.setTitle("关于扫雷");
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setSize(200, 130);
        this.init();
        this.setVisible(true);
    }
    private void init() {
        Box box = Box.createVerticalBox();
        JPanel jpanel = new JPanel();
        JLabel jlabel = new JLabel("扫雷 ©2022");
        JLabel jlabel1 = new JLabel("作者:XG.孤梦");
        JLabel jlabel2 = new JLabel("我的博客:https://www.xggm.top");
        box.add(jlabel);
        box.add(Box.createVerticalStrut(10));
        box.add(jlabel1);
        box.add(Box.createVerticalStrut(10));
        box.add(jlabel2);

        jpanel.add(box);
        this.add(jpanel);
    }
    
}

运行效果

外挂后门(com.listener/MenuListener.java)

可以在布雷完成之后就编写这个方法,目的为了方便测试,节省时间,点击外挂,就会将是雷的小方格图片替换成其他图片,比如弄成中间有个小黑点的小方格

代码语言:javascript
复制
// 后门外挂方便测试
        menuItemHole.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (Tools.isStart) {
            

        Tools.isHole = true;
                    // 判断每一个雷块是否是雷
                    for (MineLabel[] mineLabel : BombJMenuBar.this.mainframe
                            .getBombJPanel().getLabels()) {
                        for (MineLabel m : mineLabel) {
                            if (m.isMineTag()) {
                                m.setIcon(Tools.hole);
                            }
                        }
                    }
                }
            }
        });

运行效果

最后一个Java实现扫雷项目就这样完成了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 游戏菜单
    • 添加菜单监听器(com.panel/BombJMenuBar.java)
      • 编写等级菜单监听类(com.listener/MenuListener)
        • 自定义菜单项(com.dialog/UserDefined.java)
          • 自定义窗口监听器(com.listener/UserDefinedListener.java)
          • 英雄榜
            • 弹出胜利窗口(com.dialog/Win.java)
              • 英雄榜类(com.dialog/Hero.java)
              • 帮助菜单
                • 关于扫雷(com.dialog/About.java)
                  • 外挂后门(com.listener/MenuListener.java)
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档