gpt4 book ai didi

java - 连接迷宫/网格的墙壁,使所有东西都相互连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:29 24 4
gpt4 key购买 nike

我有一个二维网格,我正在尝试在所有墙壁之间创建链接。

网格是这样构造的:

    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]。

机器人还应该能够读取它前面三个方 block 中的内容,一个在左边,一个在右边,一个在正前方。

# 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]

我遇到的问题是找到正确的算法来确保机器人不仅可以穿过墙壁,还可以读取穿过墙壁的传感器。

如果机器人在左上角并面向北方,那么它会像这样看穿墙壁:

[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 语句的长度 block ,但是有太多的可能性无法涵盖所有​​这些语句而不会发疯!

我还在纸上写下了在某些情况下对 X 和 Y 的更改,但我看不到任何暗示算法的模式。

如有任何帮助,我们将不胜感激!

最佳答案

public class Robot {
public int x;
public int y;
public Robot(int x,int y) {
this.x = x;
this.y = y;
}
public void move(int direction, int steps) {
switch(direction) {
case 1: //north
int temp1 = (x-steps)%8;
x = temp1<0?(temp1+8):temp1;
break;
case 2: //south
x = (x+steps)%8;
break;
case 3: //west
int temp3 = (y-steps)%8;
y = temp3<0?(temp3+8):temp3;
break;
case 4: //east
y = (y+steps)%8;
break;
default:
System.out.println("I'm not smart enough to handle the direciton provided!");
}
}

public static void main(String[] args) {
int[][] grid = new int[8][8];
Robot robot = new Robot(0,0);
System.out.println("I'm starting at (0,0).");
robot.move(3, 9);
System.out.println("I'm moving west by 9 steps.");
System.out.println("I've arrived at ("+robot.x+","+robot.y+").");
}
}

希望上面的代码能给出一个思路。我已经测试过了。欢迎尝试。机器人前面三个方 block 的计算类似。你可以自己想办法。

关于java - 连接迷宫/网格的墙壁,使所有东西都相互连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com