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

一、前言

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

二、计步功能

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

1.步骤

1️⃣初始化步数

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

int step = 0;

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

2️⃣定义JLable并设置宽高

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

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

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

this.getContentPane().add(stepCount);

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

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

2.测试代码

在这里插入图片描述

三、菜单业务实现

1.实现重新开始

1️⃣绑定监听

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

public class GameJFrame extends JFrame implements KeyListener, ActionListener

2️⃣清零计步器

step = 0;

3️⃣打乱二维数组

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

4️⃣加载图片

initImage();

2.实现关闭游戏

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

 System.exit(0);

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 );

4.在initJFrameBar()中绑定监听

//给条目绑定监听
        restartItem.addActionListener(this);
        reloginItem.addActionListener(this);
        closeItem.addActionListener(this);
        accountItem.addActionListener(this);

四、完整代码

由于我们要实现的功能都是在动作监听的重写方法中,所以我们要判断要实现的是哪个功能,再根据功能去执行相应代码,这里就运用到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 );
        }

五、测试代码

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

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

六、结语

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值