Tic Tac Toe с качелями - разные цвета для X и O - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу настроить цвета для разных игроков; «Х» и «О». Код, где я инициализирую плату, находится здесь, и я не понимаю, почему она не работает. При запуске программы X и O оба синего цвета, даже когда я добавил циклы if / else if.

private void initializeBoard() {
for(int i = 0; i < 3; i++) {
  for(int j = 0; j < 3; j++) {
    JButton button = new JButton();
    button.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 100));
    if(currentPlayer.equals("X")) {
      button.setForeground(Color.BLUE);
    }
    else if (currentPlayer.equals("O")) {
      button.setForeground(Color.RED);
    }
    board[i][j] = button;
    button.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if(((JButton)e.getSource()).getText().equals("") &&       
        hasWon == false) {
          button.setText(currentPlayer);
          hasWon();
          choosePlayer();
        }
      }
    });
    pane.add(button);
  }
}

}

Вы можете проверить весь код на моем GitHub, если язык вас не беспокоит (я перевел некоторые вещи на английский здесь, хотя в своем коде я использовал норвежский): https://github.com/ibrarnaseer/Tic-Tac-Toe/tree/master

1 Ответ

0 голосов
/ 01 ноября 2018

Похоже, проблема в том, где вы устанавливаете цвет переднего плана. Вам нужно установить его внутри ActionListener, потому что именно там вы знаете, какой игрок выбирает эту позицию. Как то так:

private void initializeBoard() {
   for(int i = 0; i < 3; i++) {
      for(int j = 0; j < 3; j++) {
         JButton button = new JButton();
         button.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 100));
         board[i][j] = button;
         button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               if(((JButton)e.getSource()).getText().equals("") &&       
                  hasWon == false) {
                  button.setText(currentPlayer);
                  if(currentPlayer.equals("X")) {
                     button.setForeground(Color.BLUE);
                  } else if (currentPlayer.equals("O")) {
                     button.setForeground(Color.RED);
                  }
                  hasWon();
                  choosePlayer();
               }
            }
         });
         pane.add(button);
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...