阶段项目中的添加图片和打乱图片

package Puzzlegame.com.wxj.ui;

import javax.swing.*;
import java.util.Random;

public class GameJframe extends JFrame {
//游戏主界面
//创建一个二维数组
    //目的:管理数据
    //加载图片的时候,会根据二维数组中的数据进行加载
int [][] data=new int[4][4];
public GameJframe(){
    //初始化界面
    initJFrame();

    //初始化菜单
    initJmenuBar();
    //初始化数据(打乱)
initData();
    //初始化图片(根据打乱之后的结果去加载图片)
    initImage();
    //让界面显示出来
   this.setVisible(true);
}
    //初始化数据(打乱)
    private void initData() {
        //1.定义一个数组
        int []tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
        //2.打乱数组中的数据顺序
        //遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据交换
        Random r=new Random();
        for (int i = 0; i < tempArr.length; i++) {
            //获取到随机索引
            int index=r.nextInt(tempArr.length);
//拿着遍历到的每一个数据,跟随机索引上的数据进行交换。
            int temp=tempArr[i];
            tempArr[i]=tempArr[index];
            tempArr[index]=temp;
        }
        //5.给二维数组添加数据
        //解法一
        //遍历一维数组tempArr得到每一个元素,把每一个元素依次添加到二维数组中
        for (int i = 0; i < tempArr.length; i++) {
            data[i/4][i%4]=tempArr[i];
        }
    }

    //初始化图片
    //添加图片的时候,就需要按照二维数组中的数据添加图片
    private void initImage() {
    //外循环
        for (int i = 0; i < 4; i++) {
            //内循环
            for (int j = 0; j < 4; j++) {
                //获取当前要加载图片的序号
              int num=  data[i][j];
                //创建一个JLabel对象(管理容器)
                JLabel jLabel=new JLabel(new ImageIcon("F:\\javaEE\\src\\Puzzlegame\\com\\wxj\\ui\\image\\animal\\animal3\\"+num+".jpg"));
                //指定图片的位置
                jLabel.setBounds(105*j,105*i,105,105);
                //把管理容器添加到界面中
                this.getContentPane().add(jLabel);
            }
        }
    }

    private void initJmenuBar() {
        //创建整个菜单对象
        JMenuBar jMenuBar=new JMenuBar();
        //创建菜单上的两个选项的对象(功能 关于我们)
        JMenu functionJMenu=new JMenu("功能");
        JMenu aboutJMenu=new JMenu("关于我们");
//创建选项下面的条目对象
        JMenuItem replayItem=new JMenuItem("重新游戏");
        JMenuItem reLoginItem=new JMenuItem("重新登录");
        JMenuItem closeItem=new JMenuItem("关闭游戏");

        JMenuItem accountItem=new JMenuItem("公众号");
//将每一个选项下面的条目添加到选项中
        functionJMenu.add(replayItem);
        functionJMenu.add(reLoginItem);
        functionJMenu.add(closeItem);

        aboutJMenu.add(accountItem);
        //将菜单里的两个选项添加到菜单当中
        jMenuBar.add(functionJMenu);
        jMenuBar.add(aboutJMenu);
        //给整个界面设置菜单
        this.setJMenuBar(jMenuBar);
    }

    //初始化界面
    private void initJFrame() {
        //设置界面的宽高
        this.setSize(603,680);
        //设置界面的标题
        this.setTitle("拼图单机版 V1.0");
        //设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置游戏的关闭模式
        this.setDefaultCloseOperation(3);
        //取消默认的居中放置,只有取消了才能按照xy轴的形式添加组件
        this.setLayout(null);
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用大模型检索增强 Rerank 模型,检索效果提升太明显了!

Rerank 在 RAG&#xff08;Retrieval-Augmented Generation&#xff09;过程中扮演了一个非常重要的角色&#xff0c;普通的 RAG 可能会检索到大量的文档&#xff0c;但这些文档可能并不是所有的都跟问题相关&#xff0c;而 Rerank 可以对文档进行重新排序和筛选&#xff0c;让…

分布式事务解决方案Saga模式

由于这个场景需要深入详细的解释&#xff0c;我将采用分布式事务中的一个常见模式——补偿事务&#xff08;Saga模式&#xff09;——来进行解释&#xff0c;并提供一个具体的Java源码示例。请注意&#xff0c;这个示例是为了演示目的&#xff0c;并不代表一个生产级别的解决方…

Linux ping命令详解

目录 一、简介二、ping命令三、简单示例3.1 ping -c 3 www.baidu.com3.2 ping -c 3 -i 2 www.baidu.com 一、简介 PING &#xff08;Packet Internet Groper&#xff09;&#xff0c; 因特网包探索器&#xff0c;用于测试网络连接量的程序 。Ping是工作在 TCP/IP 网络体系结构…

yum指令——Linux的软件包管理器

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 什么是软件包yum指令1.yum 是什么&#xff1f;2.Linux系统&#xff08;Centos&#xff09;的生态 3.yum的相关操作安装卸载yum的相关操作小结 软件源安…

List、Set和Map有什么区别?它们的使用场景是什么?

什么是Java集合框架&#xff1f;它包含哪些主要的接口和类&#xff1f; Java集合框架是一套提供优良性能和易用性的接口和类的集合&#xff0c;位于java.util包中。它主要由两个根接口Collection和Map派生出来。其中&#xff0c;Collection是最基本的接口&#xff0c;而Set、L…

「 网络安全术语解读 」通用攻击模式枚举和分类CAPEC详解

引言&#xff1a;在网络安全领域&#xff0c;了解攻击者的行为和策略对于有效防御攻击至关重要。然而&#xff0c;攻击模式的描述和分类方式缺乏统一性和标准化。为了解决这个问题&#xff0c;MITRE公司创建了CAPEC标准&#xff0c;以提供一个共享和统一的攻击模式分类框架。 1…

保姆级教学:Java项目从0到1部署到云服务器

目录 1、明确内容 2、apt 2.1、apt 语法 2.2、常用命令 2.3、更新apt 3、安装JDK17 4、安装MySQL 4.1、安装 4.2、检查版本及安装位置 4.3、初始化MySQL配置⭐ 4.4、检查状态 4.5、配置远程访问⭐ 4.6、登录MySQL 4.7、测试数据库 4.8、设置权限与密码⭐ 5、安…

C动态内存那些事

为什么存在动态内存分配&#xff1f; 首先&#xff0c;动态内存分配是计算机中一种重要的内存管理方法&#xff0c;它主要解决了静态内存分配无法灵活应对变化需求的问题。以下是几个存在动态内存分配的原因&#xff1a; 灵活性&#xff1a;动态内存分配允许程序在运行时根据需…

算法学习之位运算

一、作用 在复杂问题中经常可以作为工具让代码更加优雅。 二、知识储备基础 “~”&#xff1a;取反符 0->1, 1->0 三、常见的两种操作 1.n的二进制表示中第k位数字是几&#xff1f; (1)原理 先右移操作&#xff0c;再与操作。 &#xff08;2&#xff09;代码实现…

HarmonyOS 沉浸式状态栏实现

比如说 我们代码是这样的 Entry Component struct Index {build() {Column() {Column() {Column() {Text(定标标题).fontSize(20).fontColor(Color.White)}.height(50).justifyContent(FlexAlign.Center)}.width(100%).backgroundColor(#FF0000)}.height(100%)} }你预览器上看…

365.水壶问题

有两个水壶,容量分别为jug1Capacity和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。 如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。 你可以: 装满任意一个水壶 清空…

漏洞原理SQL注入 手工注入漏洞

漏洞原理SQL注入 手工注入漏洞 SQL 注入的前置知识 information_schema库information_schema 是mysql5.0以上版本中自带的一个数据库。tables表information_schema库中的tables表中table_schema列&#xff08;存储数据库名&#xff09;和table_name列&#xff08;存储表名&…

tomcat与Apache---一起学习吧之服务器

Apache和Tomcat都是Web服务器&#xff0c;但它们有一些重要的区别。 Apache服务器是普通服务器&#xff0c;本身只支持HTML即普通网页。不过可以通过插件支持PHP&#xff0c;还可以与Tomcat连通&#xff08;单向Apache连接Tomcat&#xff0c;就是说通过Apache可以访问Tomcat资…

MongoDB实战

1.MongoDB介绍 1.1 什么是MongoDB MongoDB是一个文档数据库&#xff08;以JSON 为数据模型&#xff09;&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于"JSON Document"&#xff0c;并非我们一般理解的 PDF&…

实用AI工具介绍

作为一个老程序员&#xff0c;AI工具一直再用&#xff0c;周围的人也都在用&#xff0c;差不多能提升30%的效率吧。使用其实也简单&#xff0c;不光国产大模型&#xff0c;还有国内的成熟镜像&#xff0c;都能方便用上~ 综合能力水平: 4.0 > 3.5 > 国产大模型。模型能力…

【MIdjourney】五个特殊物体关键词

1.碳酸(Carbonate) 这一词语的本意是指包含碳&#xff08;C&#xff09;、氧&#xff08;O&#xff09;和氢&#xff08;H&#xff09;元素的化合物。而在MIdjourney中添加该词汇会使得生成的图片具有水滴效果且富有动态感。 2.灯丝(Filament) Filament效果可能包括更逼真的…

java 基础学习1

目录 一.注释 二.关键字 三.字面量 四.变量和标识符 五.键盘录入 六.运算符 一.注释 1.单行注释&#xff1a;//注释信息 2.多行注释&#xff1a;/* 注释信息*/ 3.文档注释&#xff1a;/** 注释信息*/ 注:文档注释暂时用不上 二.关键字 关键字: 被Java赋予了特定…

Django介绍

一、介绍 Django是Python语言中的一个Web框架&#xff0c;Python语言中主流的web框架有Django、Tornado、Flask 等多种 优势&#xff1a;大而全&#xff0c;框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等功能&#xff0c;是一个全能型框架&#xff0c;拥有自己的A…

有趣的css - 好看的呼吸灯效果

整体效果 这个效果主要用 css3 的 animation 属性来实现的。 这个效果可以用作在网站的整体 Loading&#xff0c;也可以放在网站首屏当一个 banner 的背景也是非常棒的&#xff01; 代码部分 html 部分代码&#xff1a; <div class"app"><span class&quo…