网站首页 > 文章中心 > 其它

java拼图游戏代码介绍

作者:小编 更新时间:2023-08-20 13:41:29 浏览量:248人看过

1200分跪求JAVA数字拼图游戏源代码!

import java.io.IOException;

import javax.sound.sampled.LineUnavailableException;

java拼图游戏代码介绍-图1

import javax.sound.sampled.UnsupportedAudioFileException;

// 华容道原理的拼图游戏. 利用轻组建的套用.

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Choice;

import java.awt.Color;

import java.awt.Container;

import java.awt.event.ActionEvent;

java拼图游戏代码介绍-图2

import java.awt.event.ActionListener;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class MyMainFrame extends JFrame implements ActionListener {

/**

*

*/

private static final long serialVersionUID = 1L;

MyCanvas myCanvas;

JPanel panelNorth,panelPreview;

Button start,preview,set;

Container container;

public MyMainFrame() {//初使化

container=this.getContentPane();

start=new Button("开始");

start.addActionListener(this);

preview=new Button("预览");

preview.addActionListener(this);

set = new Button("设置");

set.addActionListener(this);

panelPreview=new JPanel();

panelPreview.setLayout(null);

Icon icon=new ImageIcon ("images/pic_"+MyCanvas.pictureID+".jpg");

JLabel label=new JLabel(icon);

panelPreview.add(label);

panelNorth=new JPanel();

panelNorth.setBackground(Color.yellow);

panelNorth.add(start);

panelNorth.add(preview);

panelNorth.add(set);

myCanvas=new MyCanvas();

container.add(myCanvas,BorderLayout.CENTER);

container.add(panelNorth,BorderLayout.NORTH);

this.setResizable(false);

this.setVisible(true);

} //end of 初始化 构造函数

public void actionPerformed(ActionEvent e) {

Button button=(Button)e.getSource();

if(button==start){

myCanvas.Start();

}else if(button==preview){

if(button.getLabel()=="预览"){

container.remove(myCanvas);

container.add(panelPreview);

panelPreview.updateUI();

container.repaint();

button.setLabel("返回");

}else{

container.remove(panelPreview);

container.add(myCanvas);

button.setLabel("预览");

}

}else if(button==set){

Choice pic = new Choice();

//pic.add("QQ");

pic.add("美女");

int i=JOptionPane.showConfirmDialog(this,pic,"选择图片", JOptionPane.OK_CANCEL_OPTION);

//使用选择对话框来进行选择图片.

if(i==JOptionPane.YES_OPTION){

myCanvas.reLoadPictrue();

Icon icon=new ImageIcon("images/pic_"+MyCanvas.pictureID+".jpg");

panelPreview.removeAll();

panelPreview.repaint();

public static void main(String[] args) throws UnsupportedAudioFileException, LineUnavailableException, IOException

{

new MyMainFrame();

} //end of main

import java.awt.Rectangle;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

public class MyCanvas extends JPanel implements MouseListener

boolean hasAddActionListener=false;//设置方格的动作监听器的标志位,TRUE为已经添加上动作事件

Cell cell[];//定义方格

Rectangle cellNull;//定义空方格区域 是一个矩形类

public MyCanvas() {

this.setLayout(null);

Icon icon;

public void reLoadPictrue(){//当选择其它图形进行拼图时,需重新加载新图片

public boolean isFinish(){//判断是否拼合成功

{ int x=cell[i].getBounds().x;

int y=cell[i].getBounds().y;

return false;

} //end of for

return true;

public void Start(){//对方格进行重新排列,打乱顺序

while(cell[0].getBounds().x=100cell[0].getBounds().y=100){//当第一个方格距左上角较近时

int x=cellNull.getBounds().x;

int y=cellNull.getBounds().y;

if(direction==0){//空方格左移动,与左侧方格互换位置,左侧方格右移动

x-=100;

if(test(x,y)){

if((cell[j].getBounds().x==x)(cell[j].getBounds().y==y)){//依次寻找左侧的按钮

cell[j].move("RIGHT",100);

cellNull.setLocation(x,y);

break;//找到后跳出for循环

}else if(direction==1){//RIGHT

x+=100;

if((cell[j].getBounds().x==x)(cell[j].getBounds().y==y)){

cell[j].move("LEFT",100);

break;

y-=100;

cell[j].move("DOWN",100);

}else{//DOWN

y+=100;

cell[j].move("UP",100);

if(!hasAddActionListener)//如果尚未添加动作事件,则添加

cell[i].addMouseListener(this);

hasAddActionListener=true;

private boolean test(int x,int y){

else

public void mouseClicked(MouseEvent e) { }

public void mouseEntered(MouseEvent e) { }

public void mouseExited(MouseEvent e) { }

public void mouseReleased(MouseEvent e) { }

public void mousePressed(MouseEvent e) {

//方格的鼠标事件,因为用到了MyCanvas中的一些方法,所以呢没有在Cell类中处理鼠标事件

Cell button=(Cell)e.getSource();

int x1=button.getBounds().x;//得到所单击方格的坐标

int y1=button.getBounds().y;

button.move("UP",100);

button.move("DOWN",100);

button.move("LEFT",100);

button.move("RIGHT",100);

return;//不满足就不进行任何处理

cellNull.setLocation(x1,y1);

this.repaint();

if(this.isFinish()){//进行是否完成的判断

java拼图游戏代码介绍-图3

JOptionPane.showMessageDialog(this,"景锋恭喜你完成拼图,加油!想继续下一关么?");

cell[i].removeMouseListener(this);//如果已完成,撤消鼠标事件,鼠标单击方格不在起作用

hasAddActionListener=false;

import javax.swing.JButton;

public class Cell extends JButton {

Cell(Icon icon){//实际为ICON

super(icon);

this.setSize(100,100);

public void move(String direction,int sleep){//方格的移动

if(direction=="UP"){

this.setLocation(this.getBounds().x,this.getBounds().y-100);

}else if(direction=="DOWN"){

this.setLocation(this.getBounds().x,this.getBounds().y+100);

}else if(direction=="LEFT"){

this.setLocation(this.getBounds().x-100,this.getBounds().y);

this.setLocation(this.getBounds().x+100,this.getBounds().y);

急求用JAVA编写的图形化界面拼图小游戏代码!

(1)如何实现图片移动

语言组织能力有限.讲不太清楚.

如何用JAVA编写一个图片的拼图游戏

说说思路:

①. 本身他不是一个完整的图片,应该被切分成数组,该数组为拼图成功的标准

好了,全部的实现拼图的关键思路,其他情况还要考虑,如允许从方格中撤出图像或者与其他图像调整位置,仅代表个人不成熟的想法,希望对你能有所帮助,good luck!

用JAVA编写一个小程序 比如拼图游戏 推箱子 猜数字 ......请附详细注释 因为要发表 谢谢大家!

我写的一个猜数字游戏,希望对你有用,代码如下:

import java.util.Random;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class GuessNumber {

static int trys, A, B;

static String r, t;

public static int[] MakeGuessNumber(){//随机生成一个无重复数字的四位数

Random r = new Random();

guess[i] = r.nextInt(10);

for(int j=i-1; j=0; j--){

if(guess[i]==guess[j]){

i--;

break;}

return guess;

public static String getRundom(){//将此四位数转化为字符串

int guess[]=MakeGuessNumber();

public static void messageDialog(Object o){

JOptionPane.showMessageDialog(null, o);

public static void guessNumber(){//主要算法实现部分

r=getRundom();

//System.out.println(r);

JFrame jf=new JFrame();

JButton b1=new JButton("新游戏");

JLabel l1=new JLabel("输入:");

final JTextField jtf=new JTextField(10);

final JTextArea jta=new JTextArea(10,10);

jta.append(" "+"Guess"+" "+"Result"+"\n");

JScrollPane scrollPane=new JScrollPane(jta);

JPanel jp1=new JPanel();

jp1.add(l1);

jp1.add(jtf);

jf.add(b1,BorderLayout.NORTH);

jf.add(jp1,BorderLayout.CENTER);

jf.add(scrollPane,BorderLayout.SOUTH);

b1.addActionListener(new ActionListener(){

@Override

// TODO Auto-generated method stub

trys=0;

A=0;

B=0;

jta.setText(" "+"Guess"+" "+"Result"+"\n");

jtf.setText("");

});

t=jtf.getText();

messageDialog("Wrong Input!");

else{

trys++;

if(t.substring(0, 1).equals(r.substring(0, 1)))

A++;

B++;

jta.append(trys+" "+t+" "+A+"A"+B+"B"+"\n");

messageDialog("You win after "+trys+" trys!");

messageDialog("You win after only "+trys+" trys!");

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

public static void main(String args[]){

guessNumber();

我没有进行详细注释,这个程序挺好理解的,你可以自己再看一下

找高手帮我翻译这个JAVA拼图游戏代码(希望能帮我解析每句中用到的JAVA技术)

//以上均引用不同的package内的类

public class MyMainFrame extends JFrame implements ActionListener {//MyMainFrame类extends "JFrame"类实现 ActionListener的方法

MyCanvas myCanvas; //初始化对象MyCanvas类

JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板

Button start,preview,set;//定义开始,预览,设定按钮

Container container;//容器,得到内容面板

container=this.getContentPane(); //得到当前对象的ContentPane,并且把它赋给container

start=new Button("开始");//创建并初始新的Button(按钮)对象,赋给start

start.addActionListener(this); //在这个按钮对象中添加监听器,范围是当前对象

preview=new Button("预览");//同上,创建新的Button对象.....

preview.addActionListener(this);//同上.....

set = new Button("设置"); //同上.....(感觉代码都差不多吧?呵呵)

set.addActionListener(this);//同上

panelPreview=new JPanel(); 创建新的JPanel(面板)对象

panelPreview.setLayout(null); //设置面板对象的布局为空

JLabel label=new JLabel(icon); //定义新的JLable(java标签),并初始

panelPreview.add(label); //面板对象中添加label这个对象

panelNorth=new JPanel(); //定义新的JPanel

panelNorth.setBackground(Color.red); //设置JPanel的背景色

panelNorth.add(start); //Jpanel加入按钮

panelNorth.add(preview); //同上

panelNorth.add(set); //同上

myCanvas=new MyCanvas(); //实例化MyCanvas

container.add(myCanvas,BorderLayout.CENTER);//在容器(前边定义好了这个对象)中添加myCanvas,设置它的布局为居中

container.add(panelNorth,BorderLayout.NORTH);//添加Jpanel,布局为北(也就是上)

this.setTitle("拼图小游戏-"); //设置这个对象的题目叫.....

this.setResizable(false); //设置是否可以改变窗口的大小(否)

this.setVisible(true); //是否可以显示(是)

public static void main(String[] args) {//类进口,也就是主程序的进口

// TODO 自动生成方法存根

new MyMainFrame(); //实例化主框架

public void actionPerformed(ActionEvent arg0) {//对三个按钮事件的处理

Button button=(Button)arg0.getSource(); //取得通过监听得到的动作时间对象的源(getSource具体得到的是啥,我也不太清楚)

if(button==start){ //判断.如果监听到的是按start按钮

myCanvas.Start(); //启动myCanvas

}else if(button==preview){ //如果是preview按钮

if(button.getLabel()=="预览"){ //如果按钮的标签是"预览"

container.remove(myCanvas); //容器销毁myCanvas

container.add(panelPreview); //然后容器添加panelPreview对象

panelPreview.updateUI(); //panelPreview对象的upDateUI方法

container.repaint(); //调用容器重新画图的命令

button.setLabel("返回"); //标签设置成"返回"

}else{ //如果以上两个if都不是,执行下边的语句

container.remove(panelPreview); //cantainer销毁p....这个对象

container.add(myCanvas); //添加m...这个对象

container.repaint(); //容器重新画图

button.setLabel("预览"); //设置标签名称为"预览"

}else if(button==set){//修改所选图片 //如果间听到的是按set这个键的时候

Choice pic = new Choice(); //Choice实例化对象(这个是啥类,我也不知道,名字上看是选择?)

pic.add("小猫"); //添加小猫

pic.add("小猪"); //添加小猪

pic.add("云"); //添加云

pic.add("QQ"); //添加qq

pic.add("卡通"); //添加卡通

pic.add("花"); //花

int i=JOptionPane.showConfirmDialog(this, pic, "选择图片", JOptionPane.OK_CANCEL_OPTION);//定义一个int类型的对象i,赋值成后边的那些

if(i==JOptionPane.YES_OPTION){ //如果对象i与JOptionPane对象的YES...相等,则执行下列代码

MyCanvas.pictureID=pic.getSelectedIndex()+1; //MyC....这个类的pic...这个属性等于pic.get......这个方法的结果+1

myCanvas.reLoadPictrue(); //myCanvas对象重新读取图片

Icon icon=new ImageIcon("pic/pic_"+MyCanvas.pictureID+".jpg"); //定义新的图标对象

JLabel label=new JLabel(icon); //初始新的标签(标签中加入图标)

panelPreview.removeAll(); //调用pane....对象的remo...方法

panelPreview.add(label); //对象pan...调用add方法

panelPreview.repaint(); //调用....对象重新画的方法

------------------------

不太熟悉java的swt和swing,自己改下吧

怎么用Java实现拼图游戏,求思维和代码

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.image.BufferedImage;

import javax.swing.GroupLayout.Alignment;

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JFileChooser;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

public class Jigsaw implements ActionListener {

private JFrame frame;

private JPanel panel;

private JButtonx[] button;

private JPanel panel_right;

private JMenuBar menubar;

private ImageIcon imageicon;

private Image image;

private BufferedImage bufferedimage;

private BufferedImage[] image_button;

private JLabel label;

private JPanel panel_left;

private ImageIcon[] icon_button;

private JMenu menu1;

private JMenuItem menuitem1_1;

private JFileChooser jfc;

private String name="src/pic/1.jpg"; ? ? ? ? //起始图片位置,请自行设置

private JPanel panel_menu;

private JLabel label1_1;

public void reset() {

frame = new JFrame("拼图");

panel = new JPanel();

panel_left = new JPanel();

panel_right = new JPanel();

menubar = new JMenuBar();

menubar.setLayout(new BorderLayout());

panel_menu=new JPanel();

panel_menu.setLayout(null);

menu1 = new JMenu("开始游戏");

menuitem1_1=new JMenuItem("重新开始");

imageicon = new ImageIcon(name);

image = imageicon.getImage();

imageicon.setImage(bufferedimage);

label=new JLabel(imageicon);

panel_left.setLayout(new FlowLayout(FlowLayout.CENTER,0,0));

panel_left.add(label);

panel.add(panel_left);

jfc=new JFileChooser();

label1_1=new JLabel("您已经走了");

panel_right.setLayout(new GridLayout(level, level));

button = new JButtonx[level * level];

image_button=new BufferedImage[level*level];

for (int i = 0; i level*level/*-1*/; i++) {

icon_button=new ImageIcon[level * level];

for (int i = 0; i level * level; i++) {

button[i] = new JButtonx();

icon_button[i]=new ImageIcon(image_button[i],i+"");

button[i].setIcon(icon_button[i]);

button[i].num=i;

button[i].addActionListener(this);

panel_right.add(button[i]);

button[level*level-1].setVisible(false);

panel.add(panel_right);

menuitem1_1.addActionListener(this);

menu1.add(menuitem1_1);

menubar.add(menu1,BorderLayout.WEST);

menubar.add(panel_menu);

panel_menu.add(label1_1);

frame.setJMenuBar(menubar);

frame.add(panel);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setResizable(false);

frame.setVisible(true);

if(e.getSource()==menuitem1_1)

for (int i = 0; i level*level; i++)

button[i].setVisible(true);

int a[]=new int [level*level];

int index=level*level;

for (int i = 0; i level*level; i++) {

a[i]=i;

int x=(int)(Math.random()*index);

int temp=a[x];

a[x]=a[index-1];

a[index-1]=temp;

button[i].setIcon(icon_button[a[index-1]]);

if(a[index-1]==level*level-1)button[i].setVisible(false);

index--;

win();

JButtonx but=(JButtonx)e.getSource();

if(but.isVisible())

if(but.num-level=0)judgemengt(but.num,but.num-level);

if(but.num+level=level*level-1)judgemengt(but.num,but.num+level);

if(but.num%level-1=0)judgemengt(but.num,but.num-1);

if(but.num%level+1=level-1)judgemengt(but.num,but.num+1);

public void judgemengt(int i,int j)

if(button[j].isVisible()==false)

Icon icontemp_button=button[j].getIcon();

button[j].setIcon(button[i].getIcon());

button[i].setIcon(icontemp_button);

button[j].setVisible(true);

button[i].setVisible(false);

public void win()

int i;

for (i = 0; i level*level-1; i++) {

if(button[i].num!=Integer.parseInt(button[i].getIcon().toString()))break;

if(i==level*level-1)

JOptionPane.showMessageDialog(frame,"YOU WIN");

public static void main(String[] args) {

Jigsaw a=new Jigsaw();

a.reset();

class JButtonx extends JButton

int num;

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章