java拼图游戏代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Puzzle类:
package com.eavan;
public class Puzzle {
public static void main(String[] args) { // TODO Auto-generated method stub
new PuzzleWin();
}
}
PuzzleWin类:
/**
* 可以为游戏添加一个计时的功能,让时间成为一个判定标准* 可以分析一下为什么图片不清楚
* 可以向怎么能够让选择图片和选择难度没有顺序性(较容易)*
*/
package com.eavan;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class PuzzleWin extends JFrame implements ActionListener{
int dif = 0; //设置难度级数
int k = 0; //标记是随机数list中的第几个随机数(从而用于标记图像list 中的第几个图片)
String filename="a.jpg"; //设置的图片打开路径。默认路径其实是没用的
int step = 0; //用于记录总共用了多少步完成拼图
JMenuBar mBar = new JMenuBar();
JMenu jmSysten = new JMenu("系统");
JMenu jmGame = new JMenu("游戏");
JMenuItem restart = new JMenuItem("重新开始");
JMenuItem quit = new JMenuItem("退出");
JMenuItem choosepic = new JMenuItem("选择图片");
JMenu choosedif = new JMenu("选择难度");
JMenuItem easy = new JMenuItem("3*3");
JMenuItem hard = new JMenuItem("4*4");
JPanel mainPanel = new JPanel();
JButton[][] btn = null; //用于显示被分割的图片
ImageIcon checkIcon[][] = null; //用于存放一个正确顺序放置被分割后的图片的数组,最后与btn[][]的icon对比检测是否完成拼图
JLabel piclab = new JLabel(); //用于显示对照图片
JLabel namelab = new JLabel("对照图片:"); //用于在对照图片上面给出提醒
JLabel steplab = new JLabel(); //用于记录步数信息
JTextArea helpArea = new JTextArea(); //用于显示操作提示信息
JLabel designLabel = new JLabel(); //用于显示者设计信息
public PuzzleWin(){
this.setTitle("拼图游戏");
this.setSize(600, 500);
this.setLayout(null);
this.setLocation(200,120);
this.setResizable(false); //因使用的大多是绝对布局,还是不要更改窗体大小吧
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加menu,用于显示各种菜单
mBar.add(jmSysten);
mBar.add(jmGame);
setJMenuBar(mBar);
jmSysten.add(restart);
jmSysten.add(quit);
jmGame.add(choosedif);
jmGame.add(choosepic);
choosedif.add(easy);
choosedif.add(hard);
//设置分割图片显现的位置,使用的都是绝对布局
mainPanel.setBounds(30,30,360,360);
mainPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.add(mainPanel);
//设置对照图片的大小坐标(用一个label作为盛放pic的容器)
//显示对照图片
namelab.setBounds(450, 10, 80, 15);
steplab.setBounds(450, 160, 80, 15);
piclab.setBorder(BorderFactory.createLineBorder(Color.BLACK));
steplab.setText("步数:"+step);
piclab.setBounds(450, 30, 110, 110);
helpArea.setBounds(420, 220, 150, 120);
helpArea.setBackground(new Color(192, 192, 192));
helpArea.setText("由于本人水平有限,请按照\r\n先在游戏菜单中选择游戏难\r\n 度,再选择图片的顺序进行\r\n游戏。\r\n\r\n祝玩得开心-.-");
helpArea.setEditable(false);
designLabel.setBounds(30, 370, 200, 100);
designLabel.setText("Design By Eavan In Haust");
this.add(namelab);
this.add(piclab);
this.add(steplab);
this.add(helpArea);
this.add(designLabel);
//对menu里的各种按钮注册监听
restart.addActionListener(this);
quit.addActionListener(this);