为什么二维数组的界面会一直重复2次,每次输入一个w,s,a或d,让他移动,然后二维数组的界面会出现2次。如何实现二维数组只让他出现一次。代码如下:
#include <stdio.h>
#define ROW 11 //游戏区行数
#define COL 11 //游戏区列数
char map[ROW][COL] = {
{'F', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, //x为草坪
{'~', '~', '~', '~', '~', '~', '~', '~', '~', '~'}, //~为水流
{'~', '~', '~', '~', '~', '~', '~', 't', '~', '~'}, //o为终点
{'~', '~', '~', '~', '~', '~', '~', '~', '~', '~'}, //T为乌龟的位置
{'~', 't', '~', '~', '~', '~', 't', '~', '~', '~'},
{'~', '~', '~', '~', '~', '~', '~', '~', '~', '~'},
{'~', '~', '~', '~', '~', '~', '~', '~', '~', '~'},
{'~', '~', '~', 't', '~', 't', '~', '~', 't', '~'},
{'~', '~', '~', '~', '~', '~', '~', 't', '~', '~'},
{'~', '~', '~', '~', '~', '~', '~', '~', '~', '~'},
{'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'o', 'x'}
};
int main() {
int i, j;
int x = 0, y = 0;
char c, q;
while (1) {
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%c ", map[i][j]); //生成游戏界面
}
printf("\n");
}
printf("请输入操作:\n");
scanf("%c", &c); //w s a d
if (c == 'w') {
q = map[x - 1][y];
map[x - 1][y] = map[x][y];
map[x][y] = q;
x = x - 1;
}
else if (c == 's') {
q = map[x + 1][y];
map[x + 1][y] = map[x][y];
map[x][y] = q;
x = x + 1;
}
else if (c == 'a') {
q = map[x][y - 1];
map[x][y - 1] = map[x][y];
map[x][y] = q;
y = y - 1;
}
else if (c == 'd') {
q = map[x][y + 1];
map[x][y + 1] = map[x][y];
map[x][y] = q;
y = y + 1;
}
else if (c == 'l') {
int a, b;
printf("添加浮木:请输入浮木放置的横坐标和纵坐标\n");//添加浮木
scanf("%d%d", &a, &b);
map[a][b] = 'L';
}
else if (c == 'k') {
int a, b;
printf("清除浮木:请输入需要清除浮木的横坐标和纵坐标\n");//清除浮木
scanf("%d%d", &a, &b);
if (map[a][b] == 'L') {
map[a][b] = '~';
} else if (map[a][b] == '~' || map[a][b] == 'F' || map[a][b] == 't' || map[a][b] == 'x') {
printf("该位置没有浮木");
}
}
else if (c == 'b') {
int a, b;
printf("请输入臭虫放置的横坐标和纵坐标\n"); //添加臭虫
scanf("%d%d", &a, &b);
if (map[a][b] == 'L') {
map[a][b] = 'B';
} else if (map[a][b] == '~' || map[a][b] == 'F' || map[a][b] == 't' || map[a][b] == 'x')
printf("臭虫没有放在浮木上\n");
}
}
return 0;
}
问题如图:
请问解决的方案