Пример #1
0
int main(void){
  struct point p={0,0};
  struct point current;
  push(p);
  maze[p.row][p.col]=2;
  while(!is_empty()){
    current=pop();
    if(current.row==MAX_ROW-1&&current.col==MAX_COL-1){
      break;
    }
    //up
    if(current.row-1>=0&&maze[current.row-1][current.col]==0){
      push(current);
      visit_maze(current.row-1,current.col,current);
      maze_print();
    }
    //right
    if(current.col+1<MAX_COL&&maze[current.row][current.col+1]==0){
      push(current);
      visit_maze(current.row,current.col+1,current);
      maze_print();
    }
    //down
    if(current.row+1<MAX_ROW&&maze[current.row+1][current.col]==0){
      push(current);
      visit_maze(current.row+1,current.col,current);
      maze_print();
    }
    //left
    if(current.col-1>=0&&maze[current.row][current.col-1]==0){
      push(current);
      visit_maze(current.row,current.col+1,current);
      maze_print();
    }
  }
  if(current.row==MAX_ROW-1&&current.col==MAX_COL-1){
    printf("%d  %d\n",current.row,current.col);
    
    while(predecessor[current.row][current.col].row!=-1){
      current=predecessor[current.row][current.col];
      printf("%d  %d\n",current.row,current.col);
    }
  }
  else{
    printf("No path.\n");
  }
}
Пример #2
0
void print_maze(int width, int height, mpz_t index)
{
    maze_t *maze = maze_by_index(width, height, index);
    if (!maze) {
        fprintf(stderr, "Index number out of range\n");
        exit(EX_USAGE);
    }
    maze_print(maze);
    maze_free(maze);
}
Пример #3
0
int main(void) {
	srandom(time(NULL));
	maze *m = maze_new(4, 5);
	maze_print(m);
	maze_free(m);
}