- #include <stdio.h>
- #include <stdlib.h>
- void map(char ditu[11][10])
- {
- int n = ditu[10][0];
- int m = ditu[10][1];
- char zhiling;//用户输入移动WASD
- //输出数组ditu地图
- int i, j;
- for(i = 0;i < 10;i++){
- for(j = 0;j < 10;j++){
- printf("%c",ditu[i][j]);
- }
- printf("\n");
- }
- //用户输入
- scanf("%c", &zhiling);
- getchar();
- //判断是否能够移动
- if(zhiling == 'S' && ditu[n + 1][m] != '#'){
- ditu[n + 1][m] = '0';
- ditu[n][m] = ' ';
- n++;
- }
- else if(zhiling == 'D' && ditu[n][m + 1] != '#'){
- ditu[n][m + 1] = '0';
- ditu[n][m] = ' ';
- m++;
- }
- else if(zhiling == 'A' && ditu[n][m - 1] != '#'){
- ditu[n][m - 1] = '0';
- ditu[n][m] = ' ';
- m--;
- }
- else if(zhiling == 'W' && ditu[n - 1][m] != '#'){
- ditu[n - 1][m] = '0';
- ditu[n][m] = ' ';
- n--;
- }
- //返回多个变量给主函数n,m在ditu里面
- }
- int main(void)
- {
- int n = 1,m = 0;//下标
- //迷宫地图' '表示可移动,'#'表示墙体不可移动,'0'表示人物
- char ditu[11][10] =
- {
- '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
- '0', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#',
- '#', ' ', '#', ' ', ' ', ' ', '#', '#', ' ', '#',
- '#', ' ', ' ', ' ', '#', '#', ' ', '#', ' ', '#',
- '#', '#', '#', ' ', '#', ' ', ' ', '#', ' ', '#',
- '#', ' ', ' ', ' ', '#', ' ', '#', '#', ' ', '#',
- '#', '#', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
- '#', '#', ' ', ' ', ' ', '#', '#', '#', ' ', '#',
- '#', ' ', ' ', '#', '#', ' ', ' ', ' ', ' ', '#',
- '#', '#', '#', '#', '#', '#', '#', '#', ' ', '#',
- n , m ,
- };
- do {
- map(ditu) ;//调用函数来移动
- system("cls");
- printf("%d%d",n,m);//观察n,m是否变化
- }while(ditu[9][8] != '0');//'0'到达终点
- }
复制代码 |