Java Tic Tac Toe with ImageIcon - 改进建议



我用ImageIcons(sun.png,devil.png(在Java中编写了Tic Tac Toe。

一切正常,但问题是是否有更好的方法来过滤掉轮到谁了。目前,我使用可变String播放器以及字母OX

但是我问自己是否有办法问if (count %2 == 0) {player = sun}之类的问题,因为我想摆脱XO,因为ImageIcon s(用户不知道他是X还是O(。我希望你明白我的意思,这不会太令人困惑。非常感谢您的努力和回答!我感谢任何建议。

我理解你对吗..首先我初始化is_player_devil,is_player_sun开头是假的还是不是?

  private boolean is_player_devil = false;
        private boolean is_player_sun = false;

在轮到谁的部分,我可以简单地输入 is_player_sun = true;

public void actionPerformed(ActionEvent a) {
        count++;
        // Who's turn is it
        if (count % 2 == 0) {
            //player = "O";
            is_player_sun = true;
        } else {
            //player = "X";
            is_player_devil = true;
        }
您可以

做的是将player变量设置为boolean。在这种情况下,我会将其实例化为类似于以下内容:

private boolean is_player_one = true;

要检查轮到谁了,您可以使用一个简单的if/else

if (is_player_one) {
    // Player one's turn
} else {
    // Player two's turn
}

然后,在任一玩家回合结束时,您只需反转布尔值即可切换玩家:

is_player_one = !is_player_one;

编辑:

只需要一个布尔变量。我将变量重命名为 is_player_sun,以使您的情况更清楚。如果is_player_sun的值是true,那么轮到玩家太阳了。如果is_player_sun的值为 false ,则轮到玩家魔鬼了。因此,最终if/else情况(包括转弯的更新(应类似于:

if (is_player_sun) {
    // Player sun's turn
} else {
    // Player devil's turn
}
is_player_sun = !is_player_sun;

请注意,您不需要变量is_player_devil因为轮到玩家魔鬼是is_player_sun false的时候。

有一个代表当前玩家的ImageIcon。在您的PlayField课上:

private ImageIcon currentPlayer;
...
public Playfield() {
  currentPlayer = devil;
...
public void actionPerformed(ActionEvent a) {
  JButton pressedButton = (JButton) a.getSource();
  pressedButton.setIcon(currentPlayer);
  pressedButton.setDisabledIcon(currentPlayer);
  pressedButton.setEnabled(false);
  currentPlayer = currentPlayer.equals(devil) ? sun : devil;      

最新更新