|
发表于 2021-5-10 20:34:46
|
显示全部楼层
有好多错误,对我这个新手很不友好,花了一下午才靠百度和小甲鱼函数快查改好。
改完的如下:
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
int DrawMap(char map[16][30]);
int AmendMap(char map[16][30],char ch);
char map[16][30]={"#############################",
"#0 ## ######",
"## ##### ########## ######",
"### ###### #### ### ##",
"#### ##### # #### ######",
"####### ## ### ### # ",
"####### ## ## #### ## ##### ",
"#### ## ## ##### ### #### ",
"####### # # ### ### ",
"####### # ### ## #### #####",
"# # ## ## ## ## ######",
"##### # # # ## #### ####",
"####### # ####### ###",
"################ ###### # #",
"################## #",
"########################### #",
};//地图数组
int main(void)
{
char ch;
int retval;//结果
DrawMap(map);
while(1)
{
ch= getchar();
if(ch=='j' || ch=='J' || ch=='k' || ch=='K' || ch=='L' || ch=='l' ||ch=='i' || ch=='I')
{
ch= AmendMap(map,ch);//获取输入修改地图
DrawMap(map);//刷新显示
if(ch==1)//走出迷宫
{
printf("\n恭喜你走出迷宫!\n");
break;
}
}
};
printf("按任意键结束!\n");
getchar();
return 0;
};
int DrawMap(char map[16][30])
{
int i,j;
system("cls");
printf("C语言走迷宫,蔚蓝之链制作:QQ:2454238510 欢迎交流C语言!!!\n");
printf("开始前请关闭输入法!!!\n");
printf("jkli建移动\n");
for(i=0;i<16;i++)
{
for(j=0;j<30;j++)
{
printf("%c",map[i][j]);
}
printf("\n");
}
printf(" 出口");
return 0;
}
int AmendMap(char map[16][30],char ch)//返回1走出迷宫,否则返回0
{
int i,j;
int wx,wy;//wx:x位置,xy:y位置
for (i=0;i<16;i++)
{
for (j=0;j<30;j++)
{
if(map[i][j]=='0')
{
wy=i;
wx=j;
}
}
}
if(ch=='j' || ch=='J')//向右
{
if(map[wy][wx-1]=='#')
{
return 0;
}
else
{
map[wy][wx - 1]='0';
map[wy][wx]=' ';
}
}
if(ch=='l' || ch=='L')//向左
{
if(map[wy][wx + 1]=='#')
{
return 0;
}
else
{
map[wy][wx + 1]='0';
map[wy][wx]=' ';
}
}
if(ch=='i' || ch=='I')//向上
{
if(map[wy - 1][wx]=='#')
{
return 0;
}
else
{
map[wy - 1][wx ]='0';
map[wy][wx]=' ';
}
}
if(ch=='k' || ch=='K')//向下
{
if(map[wy + 1][wx]=='#')
{
return 0;
}
else
{
map[wy + 1][wx]='0';
map[wy][wx]=' ';
}
}
if (map[15][27]=='0')//判断走到出口
{
return 1;
}
} |
|