Я работаю над созданием игры в крестики-нолики, которая позволит пользователю играть против компьютера. Когда пользователь выбирает кнопку на доске, ИИ обнаружит, есть ли три возможных комбо. Если угроза не обнаружена, компьютер случайным образом выберет место на доске для перемещения.
Однако моя проблема в том, что когда я делаю определенный шаг, компьютер иногда перемещает его, а иногда пропускает. Мне было интересно, как это исправить, мой randomMove()
метод отображается ниже.
Требуется ли в этой ситуации рекурсивный метод (мой учитель кратко сказал мне, что это может быть необходимо) или нет? Если это рекурсивно, вы можете это объяснить? Спасибо за любую помощь!
public void RandomMove()
{
Random x = new Random();
int y = 1 + x.nextInt(9);
if (buttons[y].getText().equals("O") || buttons[y].getText().equals("X")) {
RandomMove();
}
else {
buttons[y].setText("O");
buttons[y].setEnabled(false);
}
}
Более конкретно, иногда я получаю эту ошибку:
Исключение в потоке "AWT-EventQueue-0" java.lang.StackOverflowError