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文件未实现,接下来会一一实现的

相关文章
|
20天前
|
Arthas 存储 监控
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
67 8
|
24天前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
216 8
|
8天前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
22 0
|
4月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
1290 12
|
5月前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
123 6
|
6月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
203 34
|
7月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
197 60
|
7月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
96 2
|
8月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
95 3
|
8月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
634 1