Не знаю как реализовать логику рандома начала хода
В общем, я начинающий "разработчик" на java. Чтобы отточить некоторые навыки( работу с классами, функциями, объектами и т.д), решил сделать игру с помощью javaFX(но это как дополнительная инфа). В общем, игра "крестики-нолики"(знаю что банально, но начинать надо с чего-то), и у меня щас реализована логика хода через костыль
int currentPlayer = (count % 2 == 0) ? 1 : 2;, здесь идет факт того, что если число делится на 2 - крестик, нет - нолик.
Однако, хочется внести в свой проект немного "крутости" и чтобы рандомно выбирался первый ход, то есть в одной игре был допустим крестик, во второй крестик, а в третьей уже выпал нолик(чисто пример). Но есть проблема, я не могу понять как реализовать эту логику. Может кто подскажет? Ну, или хотя бы дайте направление, чтобы набить шишек и понять как все взаимодействует.
Спасибо всем, кто откликнется!
Ответы (2 шт):
Используйте Random
public int getRandom(){
Random rand = new Random();
return rand.nextInt(2);
}
Код выдает случайные числа в диапазоне 0 - 1.
Для генерации случайных чисел в Java есть класс java.util.Random, и его потомки:
java.security.SecureRandom-- обеспечивает криптографически стойкую генерацию случайных чиселjava.util.concurrent.ThreadLocalRandom-- генератор случайных чисел для текущего потока.
Чтобы получить случайный выбор одного из двух значений 1 или 2 в дополнение к упомянутым, можно использовать разные методы:
// nextBoolean
public static int random1() { return new Random().nextBoolean() ? 1 : 2;}
public static int random2() { return ThreadLocalRandom.current().nextBoolean() ? 1 : 2;}
// Random::nextInt(toExcl)
public static int random3() { return 1 + new Random().nextInt(2);}
// ThreadLocalRandom::nextInt(fromIncl, toExcl)
public static int random4() { return ThreadLocalRandom.current().nextInt(1, 3);}