示例#1
0
 //! Ctor
 LcsWithOneTable(const Range& l, const Range& r):
     lhs(&l),
     rhs(&r),
     maze(l.size() + 1, r.size() + 1, 0)
 {
     build_maze();
 }
示例#2
0
main()
{
   randomize();
   fill_maze_with_wall();
   build_maze(1, 1, RIGHT_BOUND, BOTTOM_BOUND);
   search_target_xy(&tx, &ty);
   memset(mark, 0, sizeof(mark));
   show_maze(0, 0, RIGHT_BOUND+1, BOTTOM_BOUND+1);
   save_sth_under_target();
   draw_target();
   bioskey(0);
   init_bug(1, 1, 0);
   old_8h = getvect(8);
   old_9h = getvect(9);
   setvect(8, int_8h);
   setvect(9, int_9h);
   while(!stop)
   {
      if(move_bug(bug[0].x, bug[0].y, tx, ty) == 1) /* target has been reached */
      {
         bug_cry();
         break;
      }
   }
   setvect(8, old_8h);
   setvect(9, old_9h);
   bioskey(0);
}
示例#3
0
void build_maze(int x0, int y0, int x1, int y1)         //关键函数:随机生成一定含通路的地图
{
   int d[4][2] = {{-1,0},{0,1},{1,0},{0,-1}}, i, count;
   int flag[4] = {0,0,0,0};
   if(x0<=0 || y0<=0 || x0>x1 || y0>y1)
      return;
   if(maze[x0][y0].shape == ' ')                        //如果是本格是通的直接返回
      return;
   count = 0;
   //如果本格不是通的
   for(i=0; i<4; i++)
   {
      if(maze[x0+d[i][0]][y0+d[i][1]].shape == ' ')
         count++;
   }
   if(count >= 2)   //一个墙格周围有两个以上方向可走,则返回
      return;
   maze[x0][y0].shape = ' ';                            //如果本墙格没有超过2个方向是通的,继续往下执行
   maze[x0][y0].color = WHITE;
   count = 0;
   while(count < 4)                                     //向四个方向随机扩展
   {
      i = random(4);
      if(flag[i] == 1)
         continue;
      flag[i] = 1;
      count++;
      build_maze(x0+d[i][0], y0+d[i][1], x1, y1);
   }
}
示例#4
0
文件: main.c 项目: dotminic/maze_gen
int		main( int argc, char **argv )
{
  t_maze	maze;

  if (argc != 5)
    puts("usage: -width -height -density -solid");
  else
    {
      init_maze(&maze, atoi(argv[1]), atoi(argv[2]),
		atoi(argv[3]), atoi(argv[4]));
      if (build_maze(&maze))
	print_maze(&maze);
    }
  return 0;
}