Java实现拼图小游戏(4)—— 打乱图片(含二维数组知识点)
打乱图片
- 一、前言
- 二、思路
- 三、改写GameJFrame类
- 1.注意事项
- 2.完整代码
- 四、测试代码
- 五、结语
一、前言
在上一篇文章中讲述了如何添加图片,本文将实现将十六个格子中的小图片打乱的效果,并且会提到有关于二维数组的知识点
二、思路
在上文就提到了,这个看起来完整的大图片,实际上是十六张小图片按照一定顺序放在4×4的格子当中的,那么我们不妨 用一个二维数组来表示每一个格子
,每个格子内再放入不同的图片
;由于要求打乱图片,所以二维数组内的图片序号随机
,具体的思路如下
- 定义一个一维数组
tempArr
,存放0-15(图片编号)
int[] tempArr = {0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
- 定义一个随机数,用来表示索引值(范围是0-15)
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;}
- 创建一个二维数组
data[i][j]
来表示4×4的方格
int[][] data = new int[4][4];
- 定义一个索引,用来提取一维数组内的值
int tempIndex = 0;
- 遍历二维数组,为二维数组依次赋值为一维数组内的值
for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}//每行输出后要换行System.out.println();
}
测试一下代码
三、改写GameJFrame类
1.注意事项
- 此处要注意,由于二维数组在打乱图片和加载图片中都会用到,所以我们把初始化二维数组的代码写在成员位置上
- 打乱图片界面要放在初始化界面前面,否则无法实现打乱效果
- 要用一个数去接收二维数组中的每个数(图片编号)
- 重新定义一个方法来实现打乱图片的效果
2.完整代码
private void initdata() {//初始化一维数组int[] tempArr = {0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};//定义一个随机变量(索引)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;}//定义索引,用来提取一维数组中的数int tempIndex = 0;//遍历二维数组,填入数值for (int i = 0; i < data.length; i++) {//将每一行看作是一个一维数组,遍历一次for (int j = 0; j < data[i].length; j++) {data[i][j] = tempArr[tempIndex];//遍历完成后提取一维数组中下一个值tempIndex++;}}}private void initImage() {for(int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){int number = data[i][j];JLabel jLabel = new JLabel(new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\"+ number +".jpg"));jLabel.setBounds(105 * j, 105 * i,105,105);this.getContentPane().add(jLabel);}}}
四、测试代码
五、结语
本文中的二维数组实现方法还有另外一种,感兴趣的读者可以自己思考一下,具体的方法会在下一篇文章的文末写出来以供参考
Java实现拼图小游戏(4)—— 打乱图片(含二维数组知识点)相关推荐
- java对拼图小游戏的简单实现(详解)
使用Java编写拼图小游戏主要包括: 初始化界面 初始化菜单 初始化数据 初始化图片 其他必要功能的实现 这几部分.在进行细分时包括了菜单的搭建,添加图片,打乱图片位置,让图片移动起来,查看完整图片, ...
- Java实现拼图小游戏(5)—— 美化界面(含源码阅读)
美化界面 一.前言 二.添加背景图 1.注意事项 2.创建图片对象 3.创建JLabel的对象(一个用来放图片的容器) 4.调整位置 5.将容器放到界面中 6.优化代码 三.添加边框 1.查看源码 2 ...
- Java实现拼图小游戏(2)——菜单搭建(有关Java中的JMenuBar知识点)
菜单搭建 一.前言 二.搭建步骤 1. 创建JMenuBar 2. 创建Jmenu 3. 创建JMenuItem 4. 将JMenuItem放到Jmenu中 5. 将Jmenu放到JMeanuBar中 ...
- php打乱数组顺序(含二维数组)
php打乱数组顺序(含二维数组) 最近在做一个考试小程序的Api接口,其中一个是需要将试题列表打乱顺序,都知道,从数据库搜索出来的列表通常为数组的形式,所以我面临的问题就变成了 如何打乱数组顺序. 随 ...
- Java实现拼图小游戏(6)—— 移动图片(键盘监听实操练习)
移动图片 一.前言 二.步骤 1.让我们的类继承KeyListener接口 2.改写initData方法 3.实现向上移动 4.实现向下移动 5.实现向左移动 6.实现向右移动 7.改写initIma ...
- Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
计步功能 一.前言 二.计步功能 1.步骤 1️⃣初始化步数 2️⃣定义JLable并设置宽高 3️⃣将JLable界面放到主界面中 4️⃣重写方法中添加计步功能 2.测试代码 三.菜单业务实现 1. ...
- Java实现拼图小游戏(7)—— 作弊码和判断胜利
作弊码和判断胜利 一.前言 二.作弊码 1.功能 2.步骤 1️⃣设置作弊码 2️⃣判断 3️⃣设置成功的图片顺序 4️⃣加载图片 3.完整代码 三.判断胜利 1.功能 2.步骤 1️⃣定义正确数组 ...
- Java基础:拼图小游戏(包含Java代码)
涉及到的知识: 1.图形用户接口GUI(Graphical User Interface)用图形化的方式显示操作界面 两个体系: AWT包和Swing包 2.界面会用到JFrame类 3.界面中的菜单 ...
- java实现拼图小游戏(包括打包exe)
事先说明这是在B站上学习java基础知识的时候,写的小游戏,该游戏在B站上的视频上只实现了拼图游戏的主界面,本人在这基础上实现的功能有: 1.登录界面实现: 在原来B站视频的基础上实现了: 验证码功能 ...
最新文章
- numpy使用[]语法索引二维numpy数组中指定指定列之后所有数据列的数值内容(accessing columns in numpy array after specifc column)
- 我删了这些训练数据…模型反而表现更好了!?
- MIT一招霸气颠覆传统:勇敢换导师,成本我买单,学生沸腾了
- android spinner 简书,【Android】Spinner:下拉列表笔记
- 昼猫笔记 JavaScript -- 异步执行 | 定时器真的定时执行?
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
- 黑苹果系统坏了如何恢复_黑苹果怎么修复Clover GUI启动选项 黑苹果怎么自定义Clover GUI启动选项...
- JDK14中的java tools简介
- 最简单的nginx教程 - 如何把一个web应用部署到nginx上
- Selenium基础篇之5-第一个完整的自动化测试脚本
- 解决Element的 InfiniteScroll 无限滚动组件报错
- HP刀片带外管理系统OA各功能实例示范
- 如何在Mac上裁剪图片,教你几个技巧
- 今日头条 2018 AI Camp 视频面试
- 深大uooc学术道德与学术规范教育第六章
- 域名注册条件有哪些?需要提交哪些材料?
- Windows操作系统文件夹
- python修改csv某一列 读取csv移动文件
- PReLU与ReLU
- Java SE 高级教程