关于拼图的作品,网上有很多了,此次是自己拿以前自己用java写的拼图算法,做的一款小游戏。
游戏核心算法:确保每次初始化的图片数组有解,0表示空块。
如下:
/*
* function: check the map array and make sure it is validity. input:length,
* map output:boolean;
*/
public boolean parityCheck(int length, int[] a) {
// 返回数组的排列的逆序数加上0元素行号和列号的奇偶性,true为偶,false为奇。
int v = 0;
int zeroIndex = 0;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (a[i] > a[j]) {
v++;
}
}
if (a[i] == 0) {
zeroIndex = i;
}
}
int lineIndex = zeroIndex / COLS + 1;
int colIndex = zeroIndex % ROWS + 1;
return ((lineIndex + colIndex + v) % 2 == 0);
}
游戏界面动作:每点击一次图块,计算相邻的空位,移动内存数组,根据内存数组在界面Canvas画图块即可
完成后,运行的界面大概如下 (下面一次为初始第2张图片界面,拼成后界面,菜单界面):
菜单解释:
看原图:可以快速显示(停留时间可以设置)一下原图是什么样的,方便预览原图,当然高手可以不看原图去拼。
上张图/下张图:这个简单了,直接调出系统自带的相对当前的上一张/下一张图片,进行拼图。
图片来源:可以选择系统自带的,可以从自己手机的相册里面选取,也可以用相机现场拍照,获取图片。
难度:可以选择容易模式(2x2,2x3),普通模式(3x3,3x4),困难模式(4x4,4x5,5x5,5x6),地狱模式(6x6,6x7....)。。。。根据手机/平板的大小。越多难度越大。
音乐:可以选择是否播放系统自带的音乐,或者自己从手机选择音乐,作为背景音乐播放。
空块:设置空位的占位图片,系统自带的有,也可以自定义。
关于:软件的作者,版本等信息。
看一个困难模式的(依次是困难模式的一张图界面,选择图片来源界面, 看原图界面):
后续再加上积分和等级功能,再连接上云数据库,就更加有趣了,待更新。