关于java拼图游戏的问题 高手进

这是我做的一个拼图小游戏,是把图片放到按钮上了,问题是怎么判断最后拼了完整的图?

import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;

import javax.print.attribute.standard.Media;
import javax.swing.AbstractButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Pintu extends JFrame implements ActionListener{
Image img;
Icon img1;
BufferedImage bimg;
BufferedImage[] subimg;
int width,height;
JButton[] jb;
public Pintu(){
this.setLayout(new GridLayout(3,3));
img=this.getToolkit().getImage("F:\\JAVA\\eclipse文件\\pintu\\8.jpg");
MediaTracker me=new MediaTracker(this);
me.addImage(img, 0);
try {
me.waitForAll(0);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
width=img.getWidth(this);
height=img.getHeight(this);

bimg=new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
Graphics bg=bimg.getGraphics();
bg.drawImage(img,0,0,this);
subimg=new BufferedImage[9];
int a[] = new int[9];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 9) ;
for (int k = 0; k < i; k++) {
if (a[i] == a[k]) {
i--;
continue;
}
}
}
int z=0;
for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
subimg[a[z]]=bimg.getSubimage(width*x/3, height*y/3, width/3, height/3);
z++;
}
}
jb=new JButton[9];
for(int i=0;i<jb.length;i++){
jb[i]=new JButton();
jb[i].addActionListener(this);
this.add(jb[i]);
jb[i].setIcon(new ImageIcon(subimg[i]));
}
setSize(img.getWidth(this),img.getHeight(this));
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/*public void paint(Graphics g){
g.drawImage(subimg[0],0,0,this);
}*/
public static void main(String[] args) {
new Pintu();
}
public void actionPerformed(ActionEvent e) {
img1=jb[0].getIcon();
jb[0].setIcon(((AbstractButton) e.getSource()).getIcon());
((AbstractButton) e.getSource()).setIcon(img1);
}

}
我的想的是按钮的编号与小图片的编号全部吻合时就能判断成功了,但是我不知道具体怎么实现,希望哪位大哥能够说的清楚点,小弟谢谢了!

你的代码没有注释,实在不想看.

按钮和小图片的匹配不会写? 把小图片和按钮按里面的编号都取出来,分别组成2个字符串,然后用equals()方法来实现匹配.

建议把小图片和按钮都放在table里面,这样比较好操作.

我以前做的时候,在每个"拼图部分"里面都是有一个字符串作为编号的,鼠标点击单元格的图片的时候(比如该单元格在表格坐标是(m,n) ),则取(m+1,n),(m-1,n),(m,n+1),(m,n-1),四个单元格,检查里面是不是有"拼图部分",如果全都有,就return,如果有空格,就传点击的这个"拼图部分"进去,删除当前单元格的"拼图部分",然后把所有"拼图部分"的编号拿出来匹配.

这样做的话好像比较容易
PS:代码拿出来给别人看的时候要写注释,这个是很必须的习惯!!!

楼上说的纯属胡说八道,你见过9个拼图部分中只要A块回到原来的位置就成功的游戏么?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-19
把最开始的成功的图片所在的位置编号然后打乱后,当所有的图片对应的编号都相同了就成功了
比如 一个图片分为9块,第一块标A, 当打乱后,在回到A事就成功.,..
呵呵你可以找个程序看看
相似回答