• Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现


    一、前言

    本文将实现Java小游戏中的计步功能

    二、计步功能

    当我们移动一步的时候,左上角就会有一个计步的框,显示已经移动的步数,以便于在和小伙伴PK时可以通过步数的多少来判断胜负

    1.步骤

    1️⃣初始化步数

    注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step

    int step = 0;
    
    • 1

    注意书写位置
    在这里插入图片描述

    2️⃣定义JLable并设置宽高

    这里小伙伴可以自行调整,不一定要按照我的参数来写

    JLabel stepCount = new JLabel("当前步数:" + step);
    stepCount.setBounds(50,10,300,60);
    
    • 1
    • 2

    3️⃣将JLable界面放到主界面中

    this.getContentPane().add(stepCount);
    
    • 1

    4️⃣重写方法中添加计步功能

    在重写方法中,当我们上下左右移图片后,步数都要加一,即 count++

    2.测试代码

    在这里插入图片描述

    三、菜单业务实现

    1.实现重新开始

    1️⃣绑定监听

    由于这里我们只需要单击鼠标即可,所以绑定动作监听ActionListener

    public class GameJFrame extends JFrame implements KeyListener, ActionListener
    
    • 1

    2️⃣清零计步器

    step = 0;
    
    • 1

    3️⃣打乱二维数组

    这里我们需要把else去掉,否则会出现点击按钮后没有空白图片的情况
    在这里插入图片描述

    4️⃣加载图片

    initImage();
    
    • 1

    2.实现关闭游戏

    关闭游戏绑定事件并结束虚拟机,所以此代码较简单

     System.exit(0);
    
    • 1

    3.实现关于我们

    • 创建弹窗对象
    • 创建管理图片的容器对象
    • 设置位置和宽高
    • 将图片加载到弹框中
    • 设置弹框大小
    • 设置弹框位置
    • 设置弹框可视化
     System.out.println("公众号");
                //创建弹窗对象
                JDialog jd = new JDialog();
                //创建管理图片的容器对象JLable
                JLabel jLabel = new JLabel(new ImageIcon("F:\\IDEA\\PuzzleGame\\showMe.jpg"));
                //设置位置和宽高
                jLabel.setBounds(0,0,430,430);
                //把图片加到弹框当中
                jd.getContentPane().add(jLabel);
                //设置弹框大小
                jd.setSize(450,450);
                //让弹框置顶
                jd.setAlwaysOnTop(true);
                //让弹框居中
                jd.setLocationRelativeTo(null);
                //让弹框显示出来
                jd.setVisible(true );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.在initJFrameBar()中绑定监听

    //给条目绑定监听
            restartItem.addActionListener(this);
            reloginItem.addActionListener(this);
            closeItem.addActionListener(this);
            accountItem.addActionListener(this);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    四、完整代码

    由于我们要实现的功能都是在动作监听的重写方法中,所以我们要判断要实现的是哪个功能,再根据功能去执行相应代码,这里就运用到e.getSource();来判断我们具体要实现的功能是什么

        @Override
        public void actionPerformed(ActionEvent e) {
            Object obj = e.getSource();
            if(obj == restartItem ){
                System.out.println("重新开始");
                 step = 0;
                 initData();
                 initImage();
            }
            else if(obj == reloginItem){
                System.out.println("重新登录");
                this.setVisible(false);
                new LoginJFrame();
            }
            else if(obj == closeItem ){
                System.out.println("关闭游戏");
                System.exit(0);
            }
            else if(obj == accountItem ){
                System.out.println("公众号");
                //创建弹窗对象
                JDialog jd = new JDialog();
                //创建管理图片的容器对象JLable
                JLabel jLabel = new JLabel(new ImageIcon("F:\\IDEA\\PuzzleGame\\showMe.jpg"));
                //设置位置和宽高
                jLabel.setBounds(0,0,430,430);
                //把图片加到弹框当中
                jd.getContentPane().add(jLabel);
                //设置弹框大小
                jd.setSize(450,450);
                //让弹框置顶
                jd.setAlwaysOnTop(true);
                //让弹框居中
                jd.setLocationRelativeTo(null);
                //让弹框显示出来
                jd.setVisible(true );
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    五、测试代码

    重新开始
    在这里插入图片描述
    重新登录
    在这里插入图片描述
    关闭游戏
    在这里插入图片描述

    公众号
    这里码掉是防止过不了审核…因为是博主本人的公众号
    在这里插入图片描述

    六、结语

    本文中还有登录页面和打包成exe文件未实现,接下来会一一实现的

  • 相关阅读:
    WebSocket与SSE区别
    SpringBoot后端统计网站的IP访问次数及地区
    这几个好用的去图片水印免费软件,你们知道吗?
    网安等保-Linux服务器之最新Ubuntu-22.04-LTS系统内核优化与安全加固配置脚本使用分享
    【打卡】牛客网:BM58 字符串的排列
    SAP 概念
    【sciter】 组件化编程解决事件冒泡不生效
    uniapp相关记录
    ES6知识点总结——学习网站及环境搭建
    发面试题:(四)synchronized和lock区别
  • 原文地址:https://blog.csdn.net/Alita233_/article/details/127386603