我用ImageIcons(sun.png,devil.png(在Java中编写了Tic Tac Toe。
一切正常,但问题是是否有更好的方法来过滤掉轮到谁了。目前,我使用可变String
播放器以及字母O
和X
。
但是我问自己是否有办法问if (count %2 == 0) {player = sun}
之类的问题,因为我想摆脱X
和O
,因为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;