我正在写一个典型的二维随机游走。但是,光标只能在基本方向上移动。我编写了这个方法来测试代码,但它不排除对角线移动(当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();
}
答案 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;
}