c - 代表迷宫

扫码查看

我将如何表示这个迷宫,以便可以在其上运行dijkstras算法?

Maze

我一直在环顾四周,最常见的表示形式似乎是邻接矩阵和邻接列表。

所以:

1)我的顶点应该是什么?

2)我的边缘应该是什么?

因为这将是一场比赛,所以迷宫是未知的。

3)如何更新矩阵?

注意:我们有机会探索迷宫,所以我将使用墙壁跟随器和一个映射器,该映射器可计算机器人从一开始的距离,但不确定这一切将如何转化为有用的东西建立矩阵。

最佳答案

例如,您可以将房间结构装饰为:

struct tRoom {
    enum {
        NORTH,
        EAST,
        SOUTH,
        WEST
    };
    int walls[4]; /* status: 0 -- The wall is open
                             1 -- The wall is close
                   */
    ...
}

/* A room in the game looks like:

       ____ The wall is close and cannot walk through
      |
      |
      v
   +-----+
   |     |
   |
   |     |
   +-   -+
      ^
      |
      |____   The wall is open and can walk through

 */

 /* A maze looks like :

   +-----+-----+-----+
   |     |     |     |
   |  *              |
   |     |     |     |
   +-   -+-----+-   -+
   |     |     |     |
   |     |     |     |
   |     |     |     |
   +-----+-----+-----+
*/


并声明您的迷宫为:

struct tRoom[WIDTH][HEIGHT];


最初,机器人被放置在起跑室(有一颗星星)中。

然后,玩家可以通过按键或其他设备控制机器人的运动。
       当机器人到达目标房间时,游戏结束。

当然,您可以通过某种算法找到路径,然后将机器人引导至目标。

10-01 17:54
查看更多