2017-04-27 11 views
0

私はプログラミングに新しくなりました。私は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!" 
    } 
} 

ご協力いただきありがとうございます。前もって感謝します!

(ちなみに、私はそれが各ボタンのための出口を作成するために、このような良いアイデアではないことを知っているが、最初に、私はちょうど私が改善し始める前に、この事は働いて取得したい):)あなたが持っている

+0

*デバッガを使用します。*ブレークポイントを設定し、コードを1ステップ実行して変数を調べます。プログラムはあなたが何を期待していないのですか? –

+0

@MartinR ifステートメントCheckWin()に行くと、button.titleLabelsをチェックしますが、何とかfalseを返し、次回ボタンをクリックすると再びチェックしてtrueを返しますが、コードでは、前に "X"または "O"にtitleLabel、右か?私はそれを取得していない...私の意見では、コードは正しいはずです –

+0

'if button1.titleLabel?.text'行の上に、' print(button1.titleLabel?.text) 'などの3つのprint文を挿入します。コンソールには何が表示されますか? – Magnas

答えて

0

を:

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) 
} 

ではなく)の、最初の行の末尾に}を参照してください間違いがまたはあなたがちょうどあなたの質問のために、誤って自分のコードをコピーしなかったことですか?

また、ボタンの種類がシステムではなくカスタムであることを確認してください。それをカスタムに変更すると、デフォルトのテキストの色が白に変わりますので、黒に変更してください。

+0

私は申し訳ありません}は単なる間違いです。私の実際のコードでは正しいです。 –

+0

はい、私は思ったほど簡単にやりました。私はエラーが 'nil'に来ると確信しています。空文字列はnilではなく、' '' 'なので、if文で空のボタンをテストするはずです。 – Magnas

関連する問題