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

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

一、前言


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


二、计步功能


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


1.步骤


1️⃣初始化步数


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


int step = 0;


注意书写位置


20c3b6f0abcc420e81073f9dfdd791d8.png


2️⃣定义JLable并设置宽高


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


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


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


this.getContentPane().add(stepCount);


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


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


2.测试代码


57c473fe33e643239cd415696ba6172c.jpg


三、菜单业务实现


1.实现重新开始


1️⃣绑定监听


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


public class GameJFrame extends JFrame implements KeyListener, ActionListener


2️⃣清零计步器


step = 0;


3️⃣打乱二维数组


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


151555fb7bac450a926eea666463e322.png


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


五、测试代码


重新开始


03b3b895fb76494dab7088954477ad61.png


重新登录


cad0e6ec56134b9f9054b2cd28d5d0c4.png


关闭游戏


3377164dca5541aba0ca5f3b304813be.png


六、结语


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

相关文章
|
18天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
101 60
|
6天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
14 2
|
29天前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
23 3
|
28天前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
58 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
1月前
|
机器学习/深度学习 算法 Java
通过 Java Vector API 利用 SIMD 的强大功能
通过 Java Vector API 利用 SIMD 的强大功能
40 10
|
1月前
|
Oracle 安全 Java
Java 22 为开发人员带来了重大增强功能
Java 22 为开发人员带来了重大增强功能
37 9
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
25 1
|
3月前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
Java多线程教程:使用ReentrantLock实现高级锁功能
42 1
|
3月前
|
前端开发 开发者 安全
JSF支付功能大揭秘:探索如何在Java世界中实现安全无缝的在线支付体验
【8月更文挑战第31天】在电子商务和在线交易日益普及的今天,实现在线支付功能已成为许多Web应用的必备需求。JavaServer Faces (JSF) 作为一种流行的Java Web框架,提供了丰富的组件和工具来构建用户界面,包括与支付网关集成以实现在线支付。支付网关是处理信用卡和借记卡支付的系统,在商家和银行之间起到桥梁作用。本文将探讨如何使用JSF与支付网关集成,以及实现在线支付功能时需要考虑的关键点
46 0