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;
}
Другие вопросы по тегам