如何为迷宫制作坐标系?

时间:2018-11-04 03:58:37

标签: c

我有一个项目,需要使该程序解决一个已经制成的迷宫,但问题是我需要坐标,而且我不知道如何使它们工作。

迷宫的例子:

*************
*          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");

        }

}
  • 我需要创建一个函数,在该函数中我可以使用坐标来处理打开的文件,但是我不知道从哪里开始,它是 真的让我感到困惑,我该如何定义数组或其任何内容 被定义为。该函数将是递归的,以使程序开始找到迷宫的解决方案。 侧面说明:我只是在请求帮助的情况下知道如何才能为此创建坐标系来解决它。

非常感谢您的帮助。

1 个答案:

答案 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]是右上角的单元格,依此类推。

找到出路! :-)