今天看Android,看到一个开源库android-FlipView,然后看着看着就绕到了拼图游戏上,现在我打算写一个简单的拼图游戏。这将是我第二个连载的系列文章,今天是第一天,简单的用java命令行模拟一下拼图游戏的实现。代码:
package com.wly.algorithmproblem;
import java.util.Scanner;
/**
* 拼图游戏的简单模拟
* @author wly
*
*/
public class PicGame {
private static int COLUMN = 4;
private static int[][] elems = new int[COLUMN][COLUMN];
public static void main(String[] args) {
int elemsNum = elems.length*elems.length-1;
for(int i=0;i
(elems.length-1) || column < 0 || column > (elems.length -1)) {
System.out.println("输入数据有误,不再有效范围内!");
return;
}
if(line > 0) { //上
if(elems[line-1][column] == 0) {
exchangeElems(elems, line, column, line-1, column);
return;
}
}
if(line < (elems.length-1)) { //下
if(elems[line+1][column] == 0) {
exchangeElems(elems, line, column, line+1, column);
return;
}
}
if(column > 0) { //左
if(elems[line][column-1] == 0) {
exchangeElems(elems, line, column, line, column-1);
return;
}
}
if(column < (elems.length-1)) { //右
if(elems[line][column+1] == 0) {
exchangeElems(elems, line, column, line, column+1);
return;
}
}
System.out.println("不能移动当前元素");
return;
}
/**
* 交换二维数组中相邻的两个元素
* @param array
* @param x1
* @param y1
* @param x2
* @param y2
*/
private static void exchangeElems(int[][] array,int x1,int y1,int x2,int y2) {
int temp = array[x1][y1];
array[x1][y1] = array[x2][y2];
array[x2][y2] = temp;
}
/**
* 打印二维矩阵
* @param matrix
*/
private static void printMatrix(int[][] matrix) {
for(int i=0;i
运行效果:
14 8 5 13
10 6 1 7
15 0 11 12
4 3 9 2
输入x和y:2 0
14 8 5 13
10 6 1 7
0 15 11 12
4 3 9 2
输入x和y:1 0
14 8 5 13
0 6 1 7
10 15 11 12
4 3 9 2
输入x和y:0 0
0 8 5 13
14 6 1 7
10 15 11 12
4 3 9 2
输入x和y:
东西很简单,没什么好说的,仅仅想做一个简单的开篇。计划明天讨论一下拼图游戏的最优解问题,关于算法的。之后再用5天左右的时间,实现一下Android版的拼图游戏。敬请期待!
O啦~~~
转载请保留出处:http://blog.csdn.net/u011638883/article/details/17099617
谢谢!!