我幾乎是新的編程,我想學習Swift 3.0。布爾沒有正確返回
我一直在試圖寫我自己的井字遊戲,遊戲卻莫名其妙的布爾返回不起作用我想,當我檢查一個勝利者的方式......
的CheckWin()函數看起來像這樣:
func CheckWin() -> Bool {
if button1.titleLabel?.text == button2.titleLabel?.text && button2.titleLabel?.text == button3.titleLabel?.text && button1.titleLabel?.text != nil {
return true
} else {
return false
}
//and so on...
我的問題是,當我點擊一個按鈕它填補了按鈕帶有「X」或「O」事後我通過if語句 調用CheckWin()函數,但它集Labeltext以「贏得!」在NEXT時間之後,我點擊一個按鈕。而不是立即檢查它並將Labeltext設置爲「Won!」。
@IBAction func buttonClick(_ sender: UIButton) {
if sender.titleLabel?.text == nil {
if player % 2 == 0 {
sender.setTitle(playerx, for: UIControlState.normal)
player += 1 //Adds 1 to the variable player
turn += 1 //Adds 1 to the variable turn (to check later for a draw)
} else {
sender.setTitle(playero, for: UIControlState.normal)
player += 1
turn += 1
}
}
if CheckWin() {
label.text = "Won!"
}
}
我感謝任何幫助/提示!提前致謝!
(順便說一句,我知道這是不是一個好主意,爲每個按鈕創建一個出口,但一開始我只是想在我開始提高讓這件事的工作):)
使用*調試器*設置一個斷點,單步執行代碼,檢查變量。該計劃在什麼時候沒有達到你期望的水平? –
@MartinR當它進入if語句的時候CheckWin()會檢查button.titleLabels,但不知何故返回false,下一次我點擊一個按鈕它會再次檢查它並返回true,但是該代碼說它應該設置titleLabel爲「X」或「O」之前,對吧?我沒有得到它...在我看來,代碼應該是正確的 –
'if button1.titleLabel?.text'上面插入了三條打印語句,例如'print(button1.titleLabel?.text)'等。他們在控制檯中顯示什麼? – Magnas