2016-10-10 9 views
1

乱数ジェネレータを使用して算術上の問題を表示するアプリ(iOS)を作成しようとしています。乱数発生器は、ユーザがどのような操作(乗算、減算、加算)を実行するか、どのオペランドが使用されるかを決定します。ユーザーは、セグメント化されたコントロールを使用して難易度を選択できます。iOSモバイルアプリのXcode 7(Swift 2)に検証ループを書き込もうとしました。無限ループでスタックしました

ユーザーには、正しい答えを提供する3回の試行があります。ユーザーはテキストフィールドに回答を入力し、ボタンを押して回答を提出します。 3回目の試行後にユーザーが正しく回答しないと、プログラムは正しい回答を表示し、新しい問題が表示されます。

私は3つの試みをユーザに提供するためのコードを書くのが難しいです。今のところ無限ループを成功させました。以下は、私のコードの一部である(注:私は現在、グローバル変数であるint型):

@IBAction func submitAnswer(sender: UIButton) { 

    var newAnswer=0 

    if enteredAnswer.text!.isEmpty { 

     let alert = UIAlertController(title: "Warning!", message: "Please enter an answer.", preferredStyle: UIAlertControllerStyle.Alert) 

     let cancelAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil) 
     alert.addAction(cancelAction) 

     presentViewController(alert, animated: true, completion: nil) 
    } 

    else { 
     let textAnswer: String = enteredAnswer.text! 
     let userAnswer = Int(textAnswer)! 

     if correctAnswer != userAnswer && i < 3{ 
      newAnswer = userAnswer 

      while newAnswer != correctAnswer { 
       feedback.text = "Try Again!" 
       enteredAnswer.text = "" 
       newAnswer = Int(textAnswer)! 
       i+=1 
      } 

     } 

     if correctAnswer == userAnswer { 
      feedback.text = "Correct Answer!" 
      enteredAnswer.text = "" 
      score += 1 
      scoreValue.text = String(score) 
      i=0 
      setProblem() 
     } 

     else { 
      feedback.text = "The correct answer \n in \n \(correctAnswer)!" 
      enteredAnswer.text = "" 
      score -= 1 
      scoreValue.text = String(score) 
      i=0 
      setProblem() 
     } 

    } 

} 
+0

whileループの目的は何ですか? –

答えて

0

だけwhileループ分割する場合:あなたがあなたのゲームを作りたい場合は

 while newAnswer != correctAnswer { 
       feedback.text = "Try Again!" 
       enteredAnswer.text = "" 
       newAnswer = Int(textAnswer)! 
       i+=1 
       if i == 3 { 
        break 
       } 
      } 

を仕事:

if newAnswer != correctAnswer { 
    feedback.text = "Try Again!" 
    enteredAnswer.text = "" 
    newAnswer = Int(textAnswer)! 
    i+=1 
    if (i<3){ 
     return 
    } 
} 
関連する問題