java智力拼图小游戏
不啰嗦,直接上代码啦!
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智力拼图小游戏相关推荐
- java对拼图小游戏的简单实现(详解)
使用Java编写拼图小游戏主要包括: 初始化界面 初始化菜单 初始化数据 初始化图片 其他必要功能的实现 这几部分.在进行细分时包括了菜单的搭建,添加图片,打乱图片位置,让图片移动起来,查看完整图片, ...
- Java实现拼图小游戏(5)—— 美化界面(含源码阅读)
美化界面 一.前言 二.添加背景图 1.注意事项 2.创建图片对象 3.创建JLabel的对象(一个用来放图片的容器) 4.调整位置 5.将容器放到界面中 6.优化代码 三.添加边框 1.查看源码 2 ...
- Java实现拼图小游戏(6)—— 移动图片(键盘监听实操练习)
移动图片 一.前言 二.步骤 1.让我们的类继承KeyListener接口 2.改写initData方法 3.实现向上移动 4.实现向下移动 5.实现向左移动 6.实现向右移动 7.改写initIma ...
- Java基础:拼图小游戏(包含Java代码)
涉及到的知识: 1.图形用户接口GUI(Graphical User Interface)用图形化的方式显示操作界面 两个体系: AWT包和Swing包 2.界面会用到JFrame类 3.界面中的菜单 ...
- Java实现拼图小游戏(2)——菜单搭建(有关Java中的JMenuBar知识点)
菜单搭建 一.前言 二.搭建步骤 1. 创建JMenuBar 2. 创建Jmenu 3. 创建JMenuItem 4. 将JMenuItem放到Jmenu中 5. 将Jmenu放到JMeanuBar中 ...
- Java实现拼图小游戏(7)—— 作弊码和判断胜利
作弊码和判断胜利 一.前言 二.作弊码 1.功能 2.步骤 1️⃣设置作弊码 2️⃣判断 3️⃣设置成功的图片顺序 4️⃣加载图片 3.完整代码 三.判断胜利 1.功能 2.步骤 1️⃣定义正确数组 ...
- java实现拼图小游戏(包括打包exe)
事先说明这是在B站上学习java基础知识的时候,写的小游戏,该游戏在B站上的视频上只实现了拼图游戏的主界面,本人在这基础上实现的功能有: 1.登录界面实现: 在原来B站视频的基础上实现了: 验证码功能 ...
- Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
计步功能 一.前言 二.计步功能 1.步骤 1️⃣初始化步数 2️⃣定义JLable并设置宽高 3️⃣将JLable界面放到主界面中 4️⃣重写方法中添加计步功能 2.测试代码 三.菜单业务实现 1. ...
- Java(拼图小游戏)
目录 一.主界面分析: 二.逻辑处理 三.文件目录 四.代码 (一)游戏界面 (二)登录界面 (三)注册界面 (四)测试类代码 五.实现效果 该项目是Java基础联系项目,适用于初学者温习知识.本人也 ...
最新文章
- 查看Linux系统中某目录的大小
- 维基百科联手谷歌翻译,结果“惨不忍睹”!
- mysql随机查询 uuid_mysql实现随机查询经验谈
- 两个运放制作加法器_集成运放电路设计原理图
- C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词
- 10.15 wget:命令行下载工具
- ecshop的smarty库还原成smarty原生库方法
- Xshell显示中文,但是不能输入中文
- 庆祝教师节,李宁老师课程优惠劵疯抢中、会员卡优惠中,先到先得
- 【数据库系统】笛卡尔积与自然连接
- STM32之ADC多通道连续例程
- 16软件1班安卓第二学期学习总结
- C#调用GDAL算法进度信息传递
- 人工智能ai技术案例_AI在软件测试中的案例
- java NEW一个对象之后加入大括号
- 正则表达式之邮箱地址格式+非法字符+后缀长度的验证
- python 关于sys.argv[1]语句报错IndexError: list index out of range的解决
- RS485 光照度传感器 pc串口工具调试设备 亲身体验
- Selig集团宣布收购MGJ,成为今年公布的第二笔收购
- 理解不够,还是不够专业?程序员与架构师之间的联系
热门文章
- 天猫首页UI层次与类设计分析
- 以女大学生相亲为例,给你讲明白数据挖掘算法
- 病理图像处理个人手札(一)切片制作预处理-标准化
- 代小程序实现业务之代码管理
- 魔众文库系统 v2.5.0 批量上传,支持腾讯万象文档,重复检测
- 如何取消满意度评价,去除满意度评价
- 中海达RTK(星移查分)使用指南
- iso9660重新回顾
- Imx283 Uboot2017+Linux3/4/5系统内核移植
- 听杰伦新歌发现QQ音乐元宇宙,权游角色关系可视化地图、VNote 工具(Typora:勿cue谢谢)、最新论文 | ShowMeAI资讯日报