Мое понимание
Я интерпретирую ваш вопрос как Как мне написать функцию, которая случайным образом помечает один из оставшихся квадратов буквой «О» после того, как пользователь выполнил ход. Поправьте меня комментарием, если я ошибаюсь.
Подход к проблеме
Поскольку я не знаю точную природу кода, представляющего ваш процессор, я предоставлю вам решение высокого уровня, которое выможет реализовать.
1. Во-первых, после того, как игрок пометит квадрат с буквой «X», вы должны проверить, какие квадраты все еще остаются без отметок.Это можно сделать, инициализировав ArrayList из целых чисел от 1 до 9 в начале игры, представляющих квадраты (кнопки), которые еще не отмечены.
Рисунок: пронумерованный крестик-ноликДоска
2. Во-вторых, каждый раз, когда игрок или ЦП помечает один из квадратов, удаляет соответствующее целое число из списка.
3. Наблюдайте за событиями действия кнопок в том виде, в котором вы находитесь в данный момент, и добавьте следующий код.(наш ArrayList целых чисел называется unmarked_boxes).
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
//my code here to set text and background etc
if(jButton3.getActionCommand().equals("X") && jButton1.getActionCommand().equals("") && jButton2.getActionCommand().equals("")){
Random rand_gen = new Random();
int index_selected = rand_gen.nextInt(unmarked_boxes.size());
box_selected = unmarked_boxes.remove(index_selected);
/*
here you select and mark the button which corresponds to the box
selected. i.e. if the box_selected = 3, then find and mark button3 (not sure
how you access your buttons).
*/
}
- В коде, который я вставил, мы создаем экземпляр Object типа Random и вызываем его функцию-член nextInt (int bound).Эта функция сгенерирует число между 0 и int 'bound'.
- В этом случае мы хотим выбрать квадрат из всего списка немаркированных квадратов.
- Следовательно, мы сгенерировали число между 0 и количеством оставшихся квадратов.
- Затем мы берем (и одновременно удаляем) число, которое находится в позиции index_selected в нашем списке unmarked_boxes, и отмечаемсоответствующая кнопка с буквой «O».
- После этого вам необходимо ввести свой код, чтобы пометить выбранную кнопку.
Примечание.выбирая только 2 квадрата, затем забудьте о подходе ArrayList, который я описал.Просто вызовите rand_gen.nextBoolean () и вставьте оператор if, который выбирает одну кнопку, если она истинна, а другую, если ложь.
Этого должно быть достаточно, чтобы вы начали реализацию своего решения,
Удачи