广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现简易拼图游戏的方法详解
  • 803
分享到

Java实现简易拼图游戏的方法详解

2024-04-02 19:04:59 803人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录效果展示游戏结构实现代码效果展示 介绍:游戏共有五张图片可以选择,分成了4 X 4 十六个方格,点击开始就可以开始游戏。游戏运行的截图如下: 游戏结构 实现代码 代码如下:M

效果展示

介绍:游戏共有五张图片可以选择,分成了4 X 4 十六个方格,点击开始就可以开始游戏。游戏运行的截图如下

游戏结构

实现代码

代码如下:MedleyGame.java类

package game.medleyPicture;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

public class MedleyGame extends JFrame {
	private JLabel modelLabel;
	private JPanel centerPanel;
	private JButton emptyButton;
	int num = 0;
	public static void main(String[] args) {
		try {
			MedleyGame frame = new MedleyGame();
			frame.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//建立窗口构造方法
	public MedleyGame() {
		super();
		setResizable(false);
		setTitle("拼图游戏");
		setBounds(100, 100, 370, 525);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//创建面板对象,并增加边框、布局
		final JPanel topPanel = new JPanel();
		topPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		topPanel.setLayout(new BorderLayout());
		getContentPane().add(topPanel, BorderLayout.NORTH);//放于上方
		//创建标签放原图
		modelLabel = new JLabel();
		modelLabel.setIcon(new ImageIcon("image/"+ num+ "model.jpg"));
		topPanel.add(modelLabel, BorderLayout.WEST);
		//在右侧加个面板,添加两个按钮
		JPanel eastPanel = new JPanel();
		topPanel.add(eastPanel,BorderLayout.CENTER);
		eastPanel.setLayout(new BorderLayout());
		JButton nextButton = new JButton();
		nextButton.setText("下一张");
		nextButton.addActionListener(new NextButtonAction());
		eastPanel.add(nextButton,BorderLayout.NORTH);
		//创建按钮开局添加监听
		final JButton startButton = new JButton();
		startButton.setText("开局");
		startButton.addActionListener(new StartButtonAction());
		eastPanel.add(startButton, BorderLayout.CENTER);
		//初始化中心面板,设置边框,添加按钮
		centerPanel = new JPanel();
		centerPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		centerPanel.setLayout(new GridLayout(4, 0));
		getContentPane().add(centerPanel, BorderLayout.CENTER);
		//初始化图片
		String[][] exactnessOrder = order();
		//按排列添加按钮,设置图片
		for (int row=0; row<4; row++) {
			for (int col=0; col<4; col++) {
				final JButton button = new JButton();
				button.setName(row+""+col);
				button.setIcon(new ImageIcon(exactnessOrder[row][col]));
				if (exactnessOrder[row][col].equals("image/"+ num+"00.jpg"))
					emptyButton = button;
				button.addActionListener(new ImgButtonAction());
				centerPanel.add(button);
			}
		}
	}
	//初始化图片
	private String[][] order() {
		String[][] exactnessOrder = new String[4][4];
		for (int row=0; row<4; row++) {
			for (int col=0; col<4; col++) {
				exactnessOrder[row][col] = "image/"+ num+ row+ col+ ".jpg"; 
			}
		}
		return exactnessOrder;
	}
	//随机排列图片
	private String[][] reorder() {
		String[][] exactnessOrder = new String[4][4];
		for (int row=0; row<4; row++) {
			for (int col=0; col<4; col++) {
				exactnessOrder[row][col] = "image/"+ num+ row+ col+ ".jpg"; 
			}
		}
		String[][] stochasticOrder = new String[4][4];
		for (int row=0; row<4; row++) {
			for (int col=0; col<4; col++) {
				while (stochasticOrder[row][col]==null) {
					int r = (int) (Math.random()*4);
					int c = (int) (Math.random()*4);
					if (exactnessOrder[r][c] != null) {
						stochasticOrder[row][col] = exactnessOrder[r][c];
						exactnessOrder[r][c] = null;
					}
				}
			}
		}
		return stochasticOrder;
	}
	//游戏时排列图片
	class ImgButtonAction implements ActionListener {
		public void actionPerfORMed(ActionEvent e) {
			String emptyName= emptyButton.getName();
			char emptyRow = emptyName.charAt(0);
			char emptyCol = emptyName.charAt(1);
			JButton clickButton = (JButton) e.getSource();
			String clickName = clickButton.getName();
			char clickRow = clickName.charAt(0);
			char clickCol = clickName.charAt(1);
			if (Math.abs(clickRow - emptyRow) + Math.abs(clickCol - emptyCol) == 1) {
				emptyButton.setIcon(clickButton.getIcon());
				clickButton.setIcon(new ImageIcon("image/"+ num+ "00.jpg"));
				emptyButton = clickButton;
			}
		}
	}
	//换下一张图片
	class NextButtonAction implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			if (num==5) {
				num=0;
			} else {
				++num;
			}
			modelLabel.setIcon(new ImageIcon("image/"+num+"model.jpg"));
			String[][] exactnessOrder = order();
			int i= 0;
			for (int row=0; row<4; row++) {
				for (int col=0; col<4; col++) {
					JButton button = (JButton) centerPanel.getComponent(i++);
					button.setIcon(new ImageIcon(exactnessOrder[row][col]));
					if(exactnessOrder[row][col].equals("image/"+ num+ "00.jpg"))
						emptyButton=button;
				}
			}
		}
	}
	//开局排列图片
	class StartButtonAction implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String[][] stochasticOrder = reorder();
			int i= 0;
			for (int row=0; row<4; row++) {
				for (int col=0; col<4; col++) {
					JButton button = (JButton) centerPanel.getComponent(i++);
					button.setIcon(new ImageIcon(stochasticOrder[row][col]));
					if(stochasticOrder[row][col].equals("image/"+ num+ "00.jpg"))
						emptyButton=button;
				}
			}
		}
	}
}

代码链接地址

以上就是Java实现简易拼图游戏的方法详解的详细内容,更多关于Java拼图游戏的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java实现简易拼图游戏的方法详解

本文链接: https://www.lsjlt.com/news/148585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现简易拼图游戏的方法详解
    目录效果展示游戏结构实现代码效果展示 介绍:游戏共有五张图片可以选择,分成了4 X 4 十六个方格,点击开始就可以开始游戏。游戏运行的截图如下: 游戏结构 实现代码 代码如下:M...
    99+
    2022-11-13
  • java实现简单的拼图游戏
    用Java来实现简单的拼图游戏,供大家参考,具体内容如下 首先我们看一下这个拼图小游戏的效果图: 创建一个名称为MedleyGame的类,该类继承了JFrame类;然后在该类中分别...
    99+
    2022-11-12
  • Android实现美女拼图游戏详解
    先来看看效果: 图片切分很多份,点击交换拼成一张完整的;这样关卡也很容易设计,3 3;4 4;5 5;6 6;一直下去 加了个切换动画,效果还是不错的,其实游戏就是自定义了一...
    99+
    2022-06-06
    美女 Android
  • C++语言实现拼图游戏详解
    目录开发环境:Visual Studio 2019,easyx图形库。游戏功能列表:游戏效果一.头文件和基本量二.封面三.数据初始化四.封面规则按钮五.构造拼图六.绘图函数七.背景音...
    99+
    2022-11-12
  • C语言实现简易扫雷游戏详解
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 一、想要达到的游戏功能: 大家如果想编写一个游戏,应具备以下的步骤: 1:了解游戏的规则 2:&nbs...
    99+
    2022-11-12
  • java实现简易的五子棋游戏
    本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 先上效果图 一、问题分析 1、五子棋游戏分析: 五子棋作为较为普遍且简易的娱乐游戏,受到众多人的...
    99+
    2022-11-12
  • Java实现Android拼图游戏设计过程解析
    目录1.项目介绍2.项目原理3.项目设计4.项目实现5.获取布局6.准备图片7.初始化 item8.游戏图片的切换9.游戏胜利的判断10.游戏封面1.项目介绍 这是一款基于 Java...
    99+
    2022-11-13
  • Java实现简单的迷宫游戏详解
    目录前言主要设计功能截图代码实现窗口布局核心算法总结前言 人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行...
    99+
    2022-11-13
  • java如何实现简易的五子棋游戏
    这篇文章给大家分享的是有关java如何实现简易的五子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下先上效果图一、问题分析1、...
    99+
    2023-06-15
  • java基础教程之拼图游戏的实现
    目录前言废话不多说,直接上效果图:1.所需技术2.具体实现2.1 图片制作 2.2 创建项目 2.3 编码实现总结前言 大家在初学j...
    99+
    2022-11-13
  • Java实现简易扑克牌游戏的完整实例
    功能描述 1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。 2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的...
    99+
    2022-11-12
  • Java实现简易扑克牌游戏的完整步骤
    本篇内容主要讲解“Java实现简易扑克牌游戏的完整步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java实现简易扑克牌游戏的完整步骤”吧!Java的特点有哪些Java的特点有哪些1.Java...
    99+
    2023-06-14
  • C++简易版Tensor实现方法详解
    目录基础知识铺垫内存管理 allocate实现Tensor需要准备shape和storageTensor的设计方法(基础)Tensor的设计方法(更进一步)基础知识铺垫 缺省参数异常...
    99+
    2022-11-13
    C++ 简易Tensor C++ Tensor
  • Qt实现打地鼠游戏的方法详解
    目录功能讲解1.确定地鼠数量2.定义游戏难易程序3.难度切换4.定时器处理总结今天与大家分享一个小游戏的实现:打地鼠 看一下实现效果吧~ 在指定的时间内打中一定数额的地鼠,否则失败...
    99+
    2022-11-13
    Qt打地鼠游戏 Qt 打地鼠 Qt 游戏
  • python+pygame实现简易五子棋小游戏的三种方式
    目录五子棋小游戏实现(一):  五子棋小游戏实现(二):  五子棋小游戏实现(三): tkinter库:Python的标准Tk GU...
    99+
    2023-03-23
    python 五子棋 python pygame python pygame五子棋
  • python实现简单反弹球游戏的方法
    这篇文章将为大家详细讲解有关python实现简单反弹球游戏的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下tkinter实现,直接贴上代码from tkinter im...
    99+
    2023-06-14
  • JavaScript实现简单五子棋游戏的方法
    本篇内容介绍了“JavaScript实现简单五子棋游戏的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了JavaScr...
    99+
    2023-06-20
  • 详解C++ OpenCV实现图像拼接的原理及方法
    目录前言一、图像拼接相关原理 图像特征采集特征提取算法透视变换透视矩阵图像拷贝二、案例实现Step1:导入目标图片Step2:特征点提取和匹配 Step3:图像配...
    99+
    2022-11-13
  • Python实现猜拳与猜数字游戏的方法详解
    至此,我们的 Python零基础入门篇 的系列专栏到今天基本上算是结束了。今天没有任何的知识点,只是运用我们之前学习过的知识做两个小游戏的案例。第一个是模拟猜拳的小游戏,第二个就是猜...
    99+
    2022-11-10
  • 用Java实现简易的图书管理系统(超详细)
    目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义...
    99+
    2023-09-01
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作