数字华容道
2025-08-05 14:50:43
发布于:浙江
输入一个正整数,不要太大
WASD控制
#include <bits/stdc++.h>
#include <conio.h>
using namespace std;
int n;
int a[105][105];
int d[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};
int p[5];
void pr() {
system("cls");
int x = log10(n * n - 1) + 2;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (a[i][j] == -1) {
for (int i = 1; i <= x; i++) {
printf(" ");
}
} else {
printf("%*d", x, a[i][j]);
}
}
printf("\n");
}
}
void move(int k) {
int x = p[0] - d[k][0], y = p[1] - d[k][1];
if (!(1 <= x && x <= n && 1 <= y && y <= n)) {
return ;
}
a[p[0]][p[1]] = a[x][y];
a[x][y] = -1;
p[0] = x, p[1] = y;
}
void init() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
a[i][j] = j + (i - 1) * n;
}
}
a[n][n] = -1;
p[0] = n, p[1] = n;
srand(time(0));
for (int i = 1; i <= 500 * n * n; i++) {
move(rand() % 4);
}
}
int main() {
cin >> n;
init();
while (true) {
pr();
char key = _getch();
switch (key) {
case 'w':
move(0);
break;
case 's':
move(1);
break;
case 'a':
move(2);
break;
case 'd':
move(3);
break;
}
}
return 0;
}
这里空空如也






有帮助,赞一个