我在这里得到了这段代码:
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 ;
似乎没有改变变量的值。
我完全使用了错误的陈述或遗漏了什么吗?
答案 0 :(得分:1)
使用else if
和类似的构造。
您覆盖第3行中PlayerOneTurn
的值。
另外,请确保在更改视觉效果时触发重新绘制。
答案 1 :(得分:1)
您正在使用第一个if
将颜色更改为红色并使用第三个if
语句将其更改为蓝色,通过将if
更改为if-else
来修改代码
if ( PlayerOneTurn == true )
{
Square0.setBackground(Color.red);
PlayerOneTurn = false;
}
else
{
Square0.setBackground(Color.blue) ;
PlayerOneTurn = true;
}
答案 2 :(得分:0)
使用else if
if (PlayerOneTurn) {
Square0.setBackground(Color.red);
PlayerOneTurn = false;
}
else
{
Square0.setBackground(Color.blue)
}
答案 3 :(得分:0)
目前,您的代码将颜色设置为红色,然后将PlayerOneTurn
设置为false,然后再将颜色设置为蓝色,因为PlayerOneTurn
现在为假。
你想要的是
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
}