`
ling凌yue月
  • 浏览: 334289 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

java移动拼图游戏模拟

    博客分类:
  • java
阅读更多
自己写的一个移动拼图的雏形,自己可以在此基础上发展
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数字拼图游戏

    JAVA数字拼图游戏

    Java版拼图游戏完整源码+素材

    所含内容是自己制作的拼图游戏完整源码和素材,使用Swing实现。

    基于Java的拼图游戏

    简单基于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 Android拼图游戏...

    Java毕业论文 拼图游戏源码 文档.rar

    Java毕业论文 拼图游戏源码 文档,Java课程设计资料,比较不错吧。Java制作拼图游戏的实例,运用了Java2中的图形处理技术和消息响应技术。通过图形技术,实现图片的导入和分割。通过消息响应机制,使程序可以响应...

    java做的移动拼图游戏

    本人自己做的拼图游戏,jdk1.6 eclipse3.5 可以添加自己喜欢的图片进行游戏,自己也做了裁减图片的功能,开始游戏后,点击图片就可以进行移动了 程序的入口在MPGFrame.java里

    Java实现拼图游戏.zip

    Java实现拼图游戏.zip Java实现拼图游戏.zip Java实现拼图游戏.zip

    Java版拼图游戏源代码.rar

    Java拼图游戏源代码,“拼图游戏”是和文曲星里的拼图一样的游戏,用Java Applet来做。讲一下Java的图形和多媒体应用,并增添一些新东西。  资源文件包括:  Pintu.html 嵌入“拼图”游戏的页面,读者可以直接...

    java拼图游戏源码.zip

    这是一个java写的拼图游戏,用了swing、多线程等知识,可以设置行数列、列数、还有使用多线程写的游戏动画,拼图的图块具有磁贴设计,代码封装性较强,容易移植,纯原创。

    java代码拼图游戏

    java代码拼图游戏,利用JAVA代码编写的小游戏编程,代码较小,用于初学者练手.

    java拼图游戏课程设计

    课程设计 java java游戏 拼图 java拼图

    Java的作业拼图游戏.zip

    Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip Java的作业拼图游戏.zipJava的作业拼图游戏.zipJava的作业拼图游戏.zip...

    JAVA拼图游戏设计报告

    讲叙了 一个拼图游戏的详细的设计报告文档

    Java实现拼图游戏源码

    Java实现拼图游戏源码,可以直接使用!

    java 拼图游戏源代码

    java 拼图游戏源代码java 拼图游戏源代码java 拼图游戏源代码java 拼图游戏源代码

    基于JAVA的拼图游戏

    基于JAVA的拼图游戏 程序通过公共函数控制游戏进程

    Java实现拼图游戏

    //启动游戏的类 public class MainApp { public static void main(String[] args) { //创建主界面 PictureMainFrame frame=new PictureMainFrame(); //显示主界面 frame.setVisible(true); } }

    Java拼图游戏 Java拼图游戏

    用java写的一个拼图小游戏 用eclipse打开 在eclipse左侧包资源管理器中右键选择导入 然后选择现有项目到工作空间中,点下一步 在选择根目录中选择压缩包解压后的目录,单击完成即可

    用java编写拼图小游戏

    此程序为用JAVA编写的拼图小游戏,可通过简单的图片移动实现拼图,并实现音乐播放功能。

Global site tag (gtag.js) - Google Analytics