开始游戏指的是开始打乱图片顺序。
效果图如下:
先说产生随机数,利用随机数产生一个[0-14]的整数,代码如下:
private void init_num_arr() {
for (int i = 0; i < 16; i++) {
num_arr[i] = -1;
}
num_arr[15] = 15;
Random random = new Random();
for (int i = 0; i < 15; i++) {
int x = random.nextInt(15);
while (true) {
if (!is_in_arr(num_arr, 15, x)) {
num_arr[i] = x;
break;
} else {
x = x + 1;
if (x > 14)
x = 0;
}
}
}
}
另一个关键点是生成的随机数要是能够还原的顺序,不能太随机,如果不满足条件,则需要重新生成。
如何检测生成的随机数序列一定是可以还原的呢?请看下面的代码,这就是检测是否可以还原的序列。
int dse_num(int[] arr, int arr_num) {
int num = 0;
for (int i = 0; i < arr_num; i++) {
for (int j = i + 1; j < arr_num; j++) {
if (arr[i] > arr[j]) {
num++;
}
}
}
return num;
}
这个函数就是检测一个序列的逆序数的,如果为偶数(因为我们的华容道是4*4的),就是可以还原的,否则,需要重新生成。