自己写的一个移动拼图的雏形,自己可以在此基础上发展
public class MovePuzzle {
/**
*
*/
static int rank[][];
/**
* 0数组的索引
*/
public static int ZERO_INDEX_Y;
public static int ZERO_INDEX_X;
/**
*
*/
private static int x = 3;
private static int y = 3;
/**
*
* @param rak
*/
public MovePuzzle(int x, int y) {
this.rank = new int[x][y];
this.x = x;
this.y = y;
}
/**
* 初始化this.rank
*
* @return 返回一个初始化的二维数组
*/
public int[][] initRank() {
return this.initRank(initRank(this.rank));
}
/**
* 初始化参数1
*
* @param rak
* @return 将参数1的二维数组初始化成一个 从0开始的一个二维数组 0 1 2 3 4 5 6 7 8
*/
private int[][] initRank(int[][] rak) {
for (int i = 0; i < rak.length; i++) {
for (int j = 0; j < rak[i].length; j++) {
rak[i][j] = i * rak.length + j;
if (rak[i][j] == 0) {
this.ZERO_INDEX_X = i;
this.ZERO_INDEX_Y = j;
}
}
}
return rak;
}
/**
* 打印数组
*/
public void printArr() {
this.print2DArr(this.rank);
}
/**
* 打印出所有的二维数组
*/
public void print2DArr(int[][] twoDArr) {
for (int i = 0; i < twoDArr.length; i++) {
for (int j = 0; j < twoDArr[i].length; j++) {
System.out.print(twoDArr[i][j] + "\t");
}
System.out.println();
}
}
/**
* 得到0值得x索引和y索引
*
* @param twoDArr
*/
public void getZero_index(int[][] twoDArr) {
for (int i = 0; i < twoDArr.length; i++) {
for (int j = 0; j < twoDArr[i].length; j++) {
if (twoDArr[i][j] == 0) {
this.ZERO_INDEX_X = i;
this.ZERO_INDEX_Y = j;
}
}
}
}
/**
* 调换this.rank[oldX][oldY] 和 this.rank[newX][newY]的值
*
* @param oldX
* @param oldY
* @param newX
* @param newY
* @return 是否调换成功
*/
public boolean exchangeBlock(int oldX, int oldY, int newX, int newY) {
int tmp = 1;
tmp = this.rank[oldX][oldY];
this.rank[oldX][oldY] = this.rank[newX][newY];
this.rank[newX][newY] = tmp;
if (tmp == 0) {
this.ZERO_INDEX_X = newX;
this.ZERO_INDEX_Y = newY;
}
return true;
}
/**
* 检查是否可以移动
*
* @param oldX
* @param oldY
* @param newX
* @param newY
* @return
*/
public boolean checkCanMove(int oldX, int oldY, int newX, int newY) {
boolean result = true;
if (this.rank[oldX][oldY] != 0 && this.rank[newX][newY] != 0) {
result = false;
} else if ((oldX != newX) && (oldY != newY)) {
result = false;
}
return result;
}
/**
* 移动数字index
*
* @param index
*/
public void moveBlock(int index) {
int index_x = 0;
int index_y = 0;
/**
* 找出要移动的数字的位置
*/
for (int i = 0; i < this.rank.length; i++) {
for (int j = 0; j < this.rank[i].length; j++) {
if (this.rank[i][j] == index) {
index_x = i;
index_y = j;
}
}
}
if (checkCanMove(this.ZERO_INDEX_X, this.ZERO_INDEX_Y, index_x, index_y)) {
exchangeBlock(this.ZERO_INDEX_X, this.ZERO_INDEX_Y, index_x,
index_y);
}
}
}
下面是test类:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
MovePuzzle movePuzzle = new MovePuzzle(3, 3);
movePuzzle.initRank();
movePuzzle.printArr();
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,5);
move(movePuzzle,4);
move(movePuzzle,3);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,4);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,6);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,5);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,6);
move(movePuzzle,4);
move(movePuzzle,5);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,6);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,8);
move(movePuzzle,5);
move(movePuzzle,6);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,6);
move(movePuzzle,5);
move(movePuzzle,7);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,6);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,6);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,6);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,4);
move(movePuzzle,1);
move(movePuzzle,2);
move(movePuzzle,3);
move(movePuzzle,6);
move(movePuzzle,8);
move(movePuzzle,7);
move(movePuzzle,7);
move(movePuzzle,8);
}
public static void move(MovePuzzle movePuzzle,int i){
movePuzzle.moveBlock(i);
System.out.println("-----调换后"+i+"后------");
movePuzzle.printArr();
}
}
分享到:
相关推荐
JAVA数字拼图游戏
所含内容是自己制作的拼图游戏完整源码和素材,使用Swing实现。
简单基于java的拼图游戏 MainApp启动器 main(): 创建主界面类对象 显示界面 ------------------- PictureMainFrame主界面 init()界面初始化操作: 指定游戏窗体大小 指定游戏标题 指定游戏窗口的显示位置 ...
java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏java Android拼图游戏...
Java毕业论文 拼图游戏源码 文档,Java课程设计资料,比较不错吧。Java制作拼图游戏的实例,运用了Java2中的图形处理技术和消息响应技术。通过图形技术,实现图片的导入和分割。通过消息响应机制,使程序可以响应...
本人自己做的拼图游戏,jdk1.6 eclipse3.5 可以添加自己喜欢的图片进行游戏,自己也做了裁减图片的功能,开始游戏后,点击图片就可以进行移动了 程序的入口在MPGFrame.java里
Java实现拼图游戏.zip Java实现拼图游戏.zip Java实现拼图游戏.zip
Java拼图游戏源代码,“拼图游戏”是和文曲星里的拼图一样的游戏,用Java Applet来做。讲一下Java的图形和多媒体应用,并增添一些新东西。 资源文件包括: Pintu.html 嵌入“拼图”游戏的页面,读者可以直接...
这是一个java写的拼图游戏,用了swing、多线程等知识,可以设置行数列、列数、还有使用多线程写的游戏动画,拼图的图块具有磁贴设计,代码封装性较强,容易移植,纯原创。
java代码拼图游戏,利用JAVA代码编写的小游戏编程,代码较小,用于初学者练手.
课程设计 java java游戏 拼图 java拼图
Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip...
讲叙了 一个拼图游戏的详细的设计报告文档
Java实现拼图游戏源码,可以直接使用!
java 拼图游戏源代码java 拼图游戏源代码java 拼图游戏源代码java 拼图游戏源代码
基于JAVA的拼图游戏 程序通过公共函数控制游戏进程
//启动游戏的类 public class MainApp { public static void main(String[] args) { //创建主界面 PictureMainFrame frame=new PictureMainFrame(); //显示主界面 frame.setVisible(true); } }
用java写的一个拼图小游戏 用eclipse打开 在eclipse左侧包资源管理器中右键选择导入 然后选择现有项目到工作空间中,点下一步 在选择根目录中选择压缩包解压后的目录,单击完成即可
此程序为用JAVA编写的拼图小游戏,可通过简单的图片移动实现拼图,并实现音乐播放功能。