不啰嗦,直接上代码啦!

package gyb;import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
// import java.awt.event.MouseMotionListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;public class Picture extends JFrame{JMenuItem shuffle;JMenuItem sort;private int sm;private final int NUM=9;public Picture() {init();}JPanel pane;JLabel label;private void init() {setSize(458,515);JMenuBar bar=bar();setJMenuBar(bar);label=new JLabel("Number:"+sm);setLayout(new BorderLayout());pane=create();add(BorderLayout.NORTH,label);add(BorderLayout.CENTER,pane);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);setVisible(true);validate();shuffle.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {shuffle();}});sort.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {sort();}});}public void addListen(){for(int i=0;i<NUM;i++){pict[i].addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e){commute(e.getComponent().getName());System.out.println(isWin());sm++;}});}}private JMenuBar bar() {JMenuBar bar=new JMenuBar();JMenu menu=menu();bar.add(menu);return bar;}private JMenu menu() {JMenu menu=new JMenu("Game");shuffle=new JMenuItem("乱序");sort=new JMenuItem("排序");menu.add(shuffle);menu.add(sort);return menu;}Icon image=new ImageIcon(getClass().getResource("image/10.png"));JLabel[] pict=new JLabel[9];Integer num[]={0,1,2,3,4,5,6,7,8};ArrayList<Integer> list=new ArrayList<Integer>();ArrayList<ImageIcon> imagelist=new ArrayList<ImageIcon>();private JPanel create() {JPanel pane=new JPanel();pane.setLayout(new GridLayout(3,3));getList();getImage();for(int i=0;i<NUM;i++){pict[i]=new JLabel();pane.add(pict[i]);pict[i].setName(""+i);pict[i].setIcon(imagelist.get(i));}pict[NUM-1].setIcon(image);return pane;}private void commute(String name) {int idx=Integer.parseInt(name);int id=Integer.parseInt(getBlankName());if(((Math.abs(id-idx)==1)&&idx+id!=11&&idx+id!=5)||Math.abs(id-idx)==3){Collections.swap(list, idx, id);}for(int i=0;i<NUM;i++){pict[i].setIcon(imagelist.get(list.get(i)));}}public void getList(){for(Integer n:num){list.add(n);}}public void getImage(){ imagelist.add(new ImageIcon(getClass().getResource("image/1.png")));imagelist.add(new ImageIcon(getClass().getResource("image/4.png")));imagelist.add(new ImageIcon(getClass().getResource("image/7.png")));imagelist.add(new ImageIcon(getClass().getResource("image/2.png")));imagelist.add(new ImageIcon(getClass().getResource("image/5.png")));imagelist.add(new ImageIcon(getClass().getResource("image/8.png")));imagelist.add(new ImageIcon(getClass().getResource("image/3.png")));imagelist.add(new ImageIcon(getClass().getResource("image/6.png")));imagelist.add(new ImageIcon(getClass().getResource("image/9.png")));}public void shuffle() {Collections.shuffle(list);for(int i=0;i<NUM;i++){pict[i].setIcon(imagelist.get(list.get(i)));}addListen();sort.setEnabled(false);}public void sort(){Collections.sort(list);for(int i=0;i<NUM;i++){pict[i].setIcon(imagelist.get(list.get(i)));}pict[NUM-1].setIcon(image);}public String getBlankName(){String str=null;for(int i=0;i<NUM;i++){if(list.get(i)==8){str=pict[i].getName();}}return str;}public boolean isWin(){int i=0;for(;i<NUM;i++){if(list.get(i)!=i){return false;}}return i==NUM;}public static void main(String[] args) throws IOException {new Picture();}
}

乱序前的效果:

乱序后的效果:

欢迎使用哈!

java智力拼图小游戏相关推荐

  1. java对拼图小游戏的简单实现(详解)

    使用Java编写拼图小游戏主要包括: 初始化界面 初始化菜单 初始化数据 初始化图片 其他必要功能的实现 这几部分.在进行细分时包括了菜单的搭建,添加图片,打乱图片位置,让图片移动起来,查看完整图片, ...

  2. Java实现拼图小游戏(5)—— 美化界面(含源码阅读)

    美化界面 一.前言 二.添加背景图 1.注意事项 2.创建图片对象 3.创建JLabel的对象(一个用来放图片的容器) 4.调整位置 5.将容器放到界面中 6.优化代码 三.添加边框 1.查看源码 2 ...

  3. Java实现拼图小游戏(6)—— 移动图片(键盘监听实操练习)

    移动图片 一.前言 二.步骤 1.让我们的类继承KeyListener接口 2.改写initData方法 3.实现向上移动 4.实现向下移动 5.实现向左移动 6.实现向右移动 7.改写initIma ...

  4. Java基础:拼图小游戏(包含Java代码)

    涉及到的知识: 1.图形用户接口GUI(Graphical User Interface)用图形化的方式显示操作界面 两个体系: AWT包和Swing包 2.界面会用到JFrame类 3.界面中的菜单 ...

  5. Java实现拼图小游戏(2)——菜单搭建(有关Java中的JMenuBar知识点)

    菜单搭建 一.前言 二.搭建步骤 1. 创建JMenuBar 2. 创建Jmenu 3. 创建JMenuItem 4. 将JMenuItem放到Jmenu中 5. 将Jmenu放到JMeanuBar中 ...

  6. Java实现拼图小游戏(7)—— 作弊码和判断胜利

    作弊码和判断胜利 一.前言 二.作弊码 1.功能 2.步骤 1️⃣设置作弊码 2️⃣判断 3️⃣设置成功的图片顺序 4️⃣加载图片 3.完整代码 三.判断胜利 1.功能 2.步骤 1️⃣定义正确数组 ...

  7. java实现拼图小游戏(包括打包exe)

    事先说明这是在B站上学习java基础知识的时候,写的小游戏,该游戏在B站上的视频上只实现了拼图游戏的主界面,本人在这基础上实现的功能有: 1.登录界面实现: 在原来B站视频的基础上实现了: 验证码功能 ...

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

    计步功能 一.前言 二.计步功能 1.步骤 1️⃣初始化步数 2️⃣定义JLable并设置宽高 3️⃣将JLable界面放到主界面中 4️⃣重写方法中添加计步功能 2.测试代码 三.菜单业务实现 1. ...

  9. Java(拼图小游戏)

    目录 一.主界面分析: 二.逻辑处理 三.文件目录 四.代码 (一)游戏界面 (二)登录界面 (三)注册界面 (四)测试类代码 五.实现效果 该项目是Java基础联系项目,适用于初学者温习知识.本人也 ...

最新文章

  1. 查看Linux系统中某目录的大小
  2. 维基百科联手谷歌翻译,结果“惨不忍睹”!
  3. mysql随机查询 uuid_mysql实现随机查询经验谈
  4. 两个运放制作加法器_集成运放电路设计原理图
  5. C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词
  6. 10.15 wget:命令行下载工具
  7. ecshop的smarty库还原成smarty原生库方法
  8. Xshell显示中文,但是不能输入中文
  9. 庆祝教师节,李宁老师课程优惠劵疯抢中、会员卡优惠中,先到先得
  10. 【数据库系统】笛卡尔积与自然连接
  11. STM32之ADC多通道连续例程
  12. 16软件1班安卓第二学期学习总结
  13. C#调用GDAL算法进度信息传递
  14. 人工智能ai技术案例_AI在软件测试中的案例
  15. java NEW一个对象之后加入大括号
  16. 正则表达式之邮箱地址格式+非法字符+后缀长度的验证
  17. python 关于sys.argv[1]语句报错IndexError: list index out of range的解决
  18. RS485 光照度传感器 pc串口工具调试设备 亲身体验
  19. Selig集团宣布收购MGJ,成为今年公布的第二笔收购
  20. 理解不够,还是不够专业?程序员与架构师之间的联系

热门文章

  1. 天猫首页UI层次与类设计分析
  2. 以女大学生相亲为例,给你讲明白数据挖掘算法
  3. 病理图像处理个人手札(一)切片制作预处理-标准化
  4. 代小程序实现业务之代码管理
  5. 魔众文库系统 v2.5.0 批量上传,支持腾讯万象文档,重复检测
  6. 如何取消满意度评价,去除满意度评价
  7. 中海达RTK(星移查分)使用指南
  8. iso9660重新回顾
  9. Imx283 Uboot2017+Linux3/4/5系统内核移植
  10. 听杰伦新歌发现QQ音乐元宇宙,权游角色关系可视化地图、VNote 工具(Typora:勿cue谢谢)、最新论文 | ShowMeAI资讯日报