-6

我在这里有这段代码:

if ( event.getSource() == Square0 ) 
        {

            if ( PlayerOneTurn == true ) Square0.setBackground(Color.red);
            if ( PlayerOneTurn == true ) PlayerOneTurn = false ;

            if ( PlayerOneTurn == false ) Square0.setBackground(Color.blue) ;

        }

如果不清楚,我希望背景变为红色,并且 PlayerOneTurn 的状态变为 false,所以当我再次单击它时它变为蓝色。它有效,但if ( PlayerOneTurn == true ) PlayerOneTurn = false ;似乎并没有改变变量的值。我是否使用了完全错误的陈述或遗漏了什么?

4

4 回答 4

1

您正在将颜色更改为红色,第一个并使用第三个语句if将其更改回蓝色,通过更改为这样来修改您的代码ififif-else

if ( PlayerOneTurn == true ) 
{
     Square0.setBackground(Color.red);
     PlayerOneTurn = false;
}
else
{
     Square0.setBackground(Color.blue) ;
     PlayerOneTurn = true;
}
于 2013-03-07T12:00:33.483 回答
1

使用else if和类似的构造。

覆盖第 3 行中的值PlayerOneTurn

还要确保在更改视觉效果时触发重绘。

于 2013-03-07T11:59:39.473 回答
0

目前,您的代码将颜色设置为红色,然后设置PlayerOneTurn为 false,然后再次将颜色设置为蓝色,因为PlayerOneTurn现在是 false。

你想要的是

if ( event.getSource() == Square0 ) {

        if ( PlayerOneTurn == true ) {
            Square0.setBackground(Color.red);
            PlayerOneTurn = false ;
        } else {
            Square0.setBackground(Color.blue) ;
            PlayerOneTurn = true;
        }
    }

或者,关于布尔值更惯用:

if ( event.getSource() == Square0 ) {

        if ( PlayerOneTurn ) {
            Square0.setBackground(Color.red);
        } else {
            Square0.setBackground(Color.blue) ;
        }

        PlayerOneTurn = !PlayerOneTurn;  // True becomes false and false becomes true
    }
于 2013-03-07T12:03:26.060 回答
0

使用 else if

if (PlayerOneTurn) {
 Square0.setBackground(Color.red);
PlayerOneTurn = false;
}
else
{
 Square0.setBackground(Color.blue) 
}
于 2013-03-07T12:01:10.300 回答