Java 2-D случайная прогулка ограничена четырьмя направлениями
Я пишу типичную двумерную случайную прогулку. Однако курсор может двигаться только в кардинальных направлениях. Я написал этот метод для тестирования кода, но он не исключает диагональные перемещения (когда значения x и y равны). Вот где я застрял. Я мог бы выбрать случайное целое число от 1 до 4 и использовать вложенные if, но, похоже, должен быть более простой способ использования логических типов, поскольку это двоичное решение. Я на правильном пути?
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 ответ
Как вы сказали, есть 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;
}