我有一个项目,需要使该程序解决一个已经制成的迷宫,但问题是我需要坐标,而且我不知道如何使它们工作。
迷宫的例子:
*************
* F*
* **** * * *
* ** * * *
* ** *** * *
*S *
*************
S =开始,F,结束。
我这样加载迷宫:./labyrinth.exe labyrinth_1.txt
在我的代码中:
int main(int argc, char *argv[]) {
FILE *f;
f=fopen(argv[1],"r");
if( f==NULL ){
printf("Archive not found\n");
}
else
{
while( !feof(f) )
printf("%c", getc(f));
}
if(!strcmp(argv[2], "-solution")) {
system("clear");
FILE *r;
r=fopen("lab1.txt", "r");
while( !feof(r) )
printf("%c", getc(r));
} else {
system("clear");
printf("Command not found\n");
}
}
非常感谢您的帮助。
答案 0 :(得分:0)
一种简单的方法是声明一个字符数组,如
char lab [30] [30];
等等。然后,您在lab [0],lab [1]等中逐行读取文件。
完成后,您可以使用符号lab [x] [y]检查每个单元格;这种表示法返回的字符可以很容易地与有意义的字符(例如*,*,','S','F')进行测试。
声明静态数组意味着您选择了相当大的限制(数组的大小),也许您必须检查迷宫是否适合该数组。
请注意,如果在文本文件中正确定义了迷宫,则交换x和y坐标并不重要-迷宫应很好地(始终)以'*'分隔(实际上,坐标系应为lab [y ,x] ...)。
一旦确定迷宫和代表迷宫的数组,就可以通过递增和递减y,x索引来“移动”浏览器(试图逃离迷宫的人)。 lab [0] [0]是左上角的单元格,lab [0,1]是右上角的单元格,依此类推。
找到出路! :-)