Как я могу случайно выполнить действие кнопки - PullRequest
0 голосов
/ 09 мая 2019

Я действительно новичок в JAVA, и я играю в крестики-нолики, я закончил игрок против игрока, и теперь я хочу играть в плеер против процессора, то, что я хочу сделать, это когда игрок нажимает на кнопку, чтобы появился XЦП выберет их кнопку случайным образом, чтобы O появился, но я не знаю код для случайного выполнения действия

Я искал в интернете час и все еще не дал результата, вот мой код

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("")){
                  //this where i wanna random between 2 button action      
    }        

Я хочу, чтобы процессор выбирал между

jButton1ActionPerformed(evt);

jButton2ActionPerformed(evt);

, но я действительно понятия не имею, как это сделать

1 Ответ

0 голосов
/ 09 мая 2019

Мое понимание

Я интерпретирую ваш вопрос как Как мне написать функцию, которая случайным образом помечает один из оставшихся квадратов буквой «О» после того, как пользователь выполнил ход. Поправьте меня комментарием, если я ошибаюсь.

Подход к проблеме

Поскольку я не знаю точную природу кода, представляющего ваш процессор, я предоставлю вам решение высокого уровня, которое выможет реализовать.

1. Во-первых, после того, как игрок пометит квадрат с буквой «X», вы должны проверить, какие квадраты все еще остаются без отметок.Это можно сделать, инициализировав ArrayList из целых чисел от 1 до 9 в начале игры, представляющих квадраты (кнопки), которые еще не отмечены.

Рисунок: пронумерованный крестик-ноликДоска numbered tic-tac-toe board

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, который выбирает одну кнопку, если она истинна, а другую, если ложь.

Этого должно быть достаточно, чтобы вы начали реализацию своего решения,

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...