我有一个 2d 网格,我正在尝试在所有墙壁之间创建链接。
网格的构造如下:
grid = new State[8][8];
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
grid[i][j] = State.blank;
}
}
我有一个机器人,它应该能够像玩蛇游戏一样穿过墙壁到对面。
因此,例如,如果机器人面向北方并且位于 x[0]y[1] 位置,那么它应该连接到 x[7]y[1]。
机器人还应该能够读取它前面三个街区中的内容,一个在左边,一个在右边,一个在前面。
# x = empty space
# R = robot
# S = spaces robots sensors pick up
如果它面向北方,这就是机器人会拾取的东西:
[S][S][S][x][x][x][x][x]
[x][R][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
同样明智的是,如果机器人面向东方,它会拾取:
[x][x][S][x][x][x][x][x]
[x][R][S][x][x][x][x][x]
[x][x][S][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
我遇到的问题是找到正确的算法来确保机器人不仅可以穿过墙壁,还可以通过墙壁读取传感器。
如果机器人位于左上角并面向 NORTH,那么它会像这样读取墙壁:
[R][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[S][S][x][x][x][x][x][S]
正如你可以想象的那样,我已经尝试过长段的 IF 语句,但是有太多的可能性来覆盖它们而不发疯!
在某些情况下,我还在纸上写下了对 X 和 Y 的更改,但我真的看不到任何暗示算法的模式。
任何帮助,将不胜感激!