java拼图游戏完整代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// Cell.java
package cn.itcast.picture.ui;
import javax.swing.Icon;
import javax.swing.JButton;
/*
* 图片小方格类
*/
public class Cell extends JButton {
//带有图片的小方格
public Cell(Icon icon) {
super(icon);
//设置小方格大小
this.setSize(150, 150);
}
//带有图片和文字的小方格
public Cell(String text, Icon icon) {
super(text, icon);
//设置小方格大小
this.setSize(150, 150);
this.setHorizontalTextPosition(CENTER);//设置文字水平居中显示
this.setVerticalTextPosition(CENTER);//设置文字垂直居中显示
}
//
public void move(String direction) {
switch (direction) {
case "UP":
this.setLocation(this.getBounds().x,this.getBounds().y-150);
break;
case "DOWN":
this.setLocation(this.getBounds().x,this.getBounds().y+150);
break;
case "LEFT":
this.setLocation(this.getBounds().x-150,this.getBounds().y);
break;
case "RIGHT":
this.setLocation(this.getBounds().x+150,this.getBounds().y);
break;
default:
break;
}
}
}
//PictureCanvas.java
package cn.itcast.picture.ui;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/*
* 拼图类
*/
public class PictureCanvas extends JPanel implements MouseListener { //静态变量
public static int pictureID = 1;//图片ID
public static int stepNum = 0;//步数
private Cell[] cell;
private boolean hasAddActionListener = false;//表示是否为小方格添加了点击监听,有为true
private Rectangle nullCell;
//构造方法
public PictureCanvas() {
initCanvas();
}
//初始化
public void initCanvas(){
//设置拼图区的位置
this.setLayout(null);//帧布局
//创建12个小方格,并添加到拼图区
cell = new Cell[12];
for(int i = 0;i < 4;i++){
for(int j = 0;j < 3;j++){
//加载图片
int num = i*3+j;
ImageIcon icon = new ImageIcon("picture/"+pictureID+"_"+(num+1)+".gif");
//创建图片小方格
cell[num] = new Cell(icon);
//指定显示位置
cell[num].setLocation(150*j+20, i*150+20);
//把图片小方格添加到拼图区
this.add(cell[num]);
}
}
//删除第12个小方格
this.remove(cell[11]);
nullCell = new Rectangle(320, 470, 150, 150);
hasAddActionListener = false;
}
//重新加载图片,并添加数字提示
public void reloadPictureAddNumber() {
for(int i = 0;i < 4;i++){
for(int j = 0;j < 3;j++){
int num = i*3+j;
ImageIcon icon = new ImageIcon("picture/"+pictureID+"_"+(num+1)+".gif");
cell[num].setIcon(icon);
cell[num].setText(num+1+"");
cell[num].setVerticalTextPosition(getY()/2);
cell[num].setHorizontalTextPosition(getX()/2);
}
}
}
//重新加载图片,并清除数字提示
public void reloadPictureClearNumber() {
for(int i = 0;i < 4;i++){
for(int j = 0;j < 3;j++){
int num = i*3+j;