私はプログラミングに新しくなりました。私は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!"
}
}
ご協力いただきありがとうございます。前もって感謝します!
(ちなみに、私はそれが各ボタンのための出口を作成するために、このような良いアイデアではないことを知っているが、最初に、私はちょうど私が改善し始める前に、この事は働いて取得したい):)あなたが持っている
*デバッガを使用します。*ブレークポイントを設定し、コードを1ステップ実行して変数を調べます。プログラムはあなたが何を期待していないのですか? –
@MartinR ifステートメントCheckWin()に行くと、button.titleLabelsをチェックしますが、何とかfalseを返し、次回ボタンをクリックすると再びチェックしてtrueを返しますが、コードでは、前に "X"または "O"にtitleLabel、右か?私はそれを取得していない...私の意見では、コードは正しいはずです –
'if button1.titleLabel?.text'行の上に、' print(button1.titleLabel?.text) 'などの3つのprint文を挿入します。コンソールには何が表示されますか? – Magnas