2013-03-07 51 views
-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的狀態變成假的,這樣的話它的變化藍色,當我再次點擊它。 它可以工作,但if (PlayerOneTurn == true) PlayerOneTurn = false ;似乎沒有改變變量的值。 我是完全使用錯誤的語句還是錯過了某些東西?

+2

你並不需要布爾值與真或假的比較。只要寫'if(boolField)'來檢查它是否爲真,'if(!boolField)'來檢查它是否爲假。 – user 2013-03-07 12:01:11

+2

A方評論:按照慣例的變量以小寫字母開頭。例如。 playerOneTurn。 – 2013-03-07 12:02:20

回答

1

使用else if和類似的構造。

覆蓋PlayerOneTurn值在第3行

還要確保當你改變你的視覺觸發重繪。

1

你正在改變顏色爲紅色,並與第一if與第三if聲明更改它回藍,通過改變if修改代碼以if-else這樣

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

使用否則,如果

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

目前,您的代碼將顏色設置爲紅色,然後將PlayerOneTurn設置爲false,然後再次將顏色設置爲藍色,因爲,PlayerOneTurn是n錯誤的。

你想要的是

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 
    }