#include <stdio.h>
#define ROW 6
#define COL 6
// 打印迷宫
void printMap(char (*array)[COL], int rows, int cols) {
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
printf("%c", array[i][j]);
}
printf("\n");
}
}
int main(int argc, const char * argv[]) {
/*
while(1) {
打印界面
判断是否走出迷宫,跳出循环
提示使用户输入
判断用户输入,并修改人物的位子
// 怎么让人移动的?
// 所谓的移动就是将位置交换
// 怎么判断上下左右呢
// 如果输入的是w就表示i-1
// 如果输入的是s就表示i+1
// ...
}
*/
char map[ROW][COL]={
{'#','#','#','#','#','#'},
{'#','O','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};
char ch, temp;
int i = 1, j = 1;
while (1) {
// 清屏
system("clear"); // 调用系统的函数,指向shell
// 打印迷宫
printMap(map, ROW, COL);
// 胜利的判断
// i == 0 或 i == cols - 1
// j == 0 或 j == rows - 1
if(i == 0 || i == COL - 1 || j == 0 || j == ROW - 1) {
printf("恭喜,你越狱成功!\n");
break;
}
// 打印提示信息
printf("请输入操作:w向上,s向下,a向左,d向右,输入完成后回车\n");
scanf("%c", &ch);
while (1) {
scanf("%c", &temp);
if(temp == '\n') break;
}
// 判断用户输入
switch (ch) {
case 'w':
case 'W':
// 向上
// i - 1
// 判断下一步即map[i-1][j]是否为#或' '
// if(... == ' ') 交换
if(map[i - 1][j] == ' ') {
temp = map[i][j];
map[i][j] = map[i-1][j];
map[i-1][j] = temp;
i--;
}
break;
case 's':
case 'S':
if(map[i + 1][j] == ' ') {
temp = map[i][j];
map[i][j] = map[i+1][j];
map[i+1][j] = temp;
i++;
}
break;
case 'a':
case 'A':
if(map[i][j-1] == ' ') {
temp = map[i][j];
map[i][j] = map[i][j-1];
map[i][j-1] = temp;
j--;
}
break;
case 'd':
case 'D':
if(map[i][j+1] == ' ') {
temp = map[i][j];
map[i][j] = map[i][j+1];
map[i][j+1] = temp;
j++;
}
break;
}
}
return 0;
}
|
|