0

不幸的是,下面的代码片段无法正常运行。它附加到 JLabel 以便在单击时注意到 PlayerOne 或 PlayerTwo 是否正在播放,并相应地重新排列它们的布尔值

[例如:当 mouseClicked 时:如果 playerOne 为 true,则执行某些操作,并将 playerOne 设置为 false,将 playerTwo 设置为 true]。

因此,当 mouseClicked 被激活时,它会交换它们的值!

        public void mouseClicked(MouseEvent arg0) {
            if(playerOne = true){
                playerOne = false;
                playerTwo = true;
                boxOne.setIcon(xIcon);                  
            } else { if(playerTwo = true){
                playerOne = true;
                playerTwo = false;
                boxOne.setIcon(oIcon);
            }}

在此先感谢,汤姆!

4

3 回答 3

2
if(playerTwo = true)

==不是=

有一个 1 或 2 的“currentPlayer”整数不是更简单吗?这也将防止两个玩家同时活跃的(可能是不可能的)状态。

于 2012-12-30T20:56:01.487 回答
2

您在此处使用作业

if (playerTwo = true)

用。。。来代替

if (playerTwo == true)

或更好

if (playerTwo)
于 2012-12-30T20:56:54.187 回答
0

在java中,测试两个项目之间相等性的操作数是==而不是'=',这是一个赋值;赋值返回分配的值,所以你的:

if (playerOne = true)

将始终为真,因为 playerOne 将被分配给true,然后 if 将变为if (true)并且关联的语句将始终被执行。

重构代码的最佳方法是:

    public void mouseClicked(MouseEvent arg0) {
        if(playerOne) {
            playerOne = false;
            playerTwo = true;
            boxOne.setIcon(xIcon);                  
        } else if(playerTwo) {
            playerOne = true;
            playerTwo = false;
            boxOne.setIcon(oIcon);
       }
    }

因为这something == true将是多余的。

于 2012-12-30T21:01:06.727 回答