Java 2-D随机游走仅限于四个方向

时间:2016-02-21 17:16:58

标签: java random boolean

我正在写一个典型的二维随机游走。但是,光标只能在基本方向上移动。我编写了这个方法来测试代码,但它不排除对角线移动(当x和y值相等时)。那就是我被困住的地方。我可以选择1到4之间的随机整数并使用嵌套ifs,但似乎应该有一种更简单的方法使用布尔类型,因为它是一个二元决策。我是在正确的轨道上吗?

for (int i = 1; i <= 10; i++) {

    //assume x & y are already initialized       

    Random xmove = new Random();
    Random ymove = new Random();

    // select new x-coord
    if (xmove.nextBoolean()) {
        x += 1;
    } else {
        x += -1;
    }

    // select new y-cord
    if (ymove.nextBoolean()) {
        y += 1;
    } else {
        y += -1;
    }

    System.out.printf("(%d, %d)", x, y);
    System.out.println();         
}

1 个答案:

答案 0 :(得分:3)

如你所说,有4种可能的移动(x + 1,x-1,y + 1,y-1),因此决定它不是二元的。但是,您不需要嵌套ifs:只需选择哪个操作发生在哪个结果上。

if (move == 0) {
    x += 1;
} else if (move == 1) {
    x += -1;
} else if (move == 2) {
    y += 1;
} else {
    y += -1;
}