0

answer現在、1 から 100 の間の値を生成するプログラムを作成しています。

int answer = 0;
answer = arc4random() % 100 + 1;

まず、ユーザーに画面上のフィールドの値を推測してもらいます。次に、スクリプトは単純なループを実行して、入力した値がランダムanswer値と一致するかどうかを判断します。

この時点で、ユーザーの推測を求める初期画面が表示されます。数値を入力し、ボタンをクリックして値を送信します。問題は、最初のエントリから値を正しく推測しない場合、answerボタンをクリックするたびに回答値が再生成され、新しいランダム値に適用されることです。

私の質問は、ビューの開始時にランダムな値を生成し、ユーザーがその値を正しく推測するまで維持する方法です。

私の試みはこれを再配置することでした:

int answer = 0;
answer = arc4random() % 100 + 1;

answerページの先頭に移動しましたが、後でページでメソッドが呼び出されたときに識別子が欠落していることを示すエラーが表示されます。ご支援いただきありがとうございます。

4

1 に答える 1

0

問題は、コメントで述べたように、ランダム生成スニペットを IBAction 内に配置したためだと思います。

これは、フィールドで送信された値を取るメソッドです

これは、ユーザーがボタンをクリックするたびに、guessNow:sender 内のコードがトリガーされることを意味します。つまり、ユーザーが推測を送信するたびに乱数を生成しますが、意味がありません。

//this is the method which takes the value submitted in the field and changes the label display after the user clicks the guess now button

- (IBAction)guessNow:(id)sender {

//set the random siri guess value between 1 and 100

int answer = 0;
answer = arc4random() % 100 + 1;

self.usersGuess = self.guessNumberField.text;

そのコード ブロックを viewDidLoad() 内に配置し、プロパティ _answer を .h に追加する必要があります

ここに簡単な解決策があります.XCodeでこれを書いていないので、構文エラーがあるかもしれません.

あなたの.hに、追加します

@property (strong) int _answer;

あなたの.mで、これをguessNow:senderから削除してください

int answer = 0;
answer = arc4random() % 100 + 1;

これをviewDidLoad()に追加します

answer = arc4random() % 100 + 1;

また、乱数をリセットする別のボタンを追加することもできます。そのため、乱数の生成を .m でこのようなプライベート メソッドに分離することをお勧めします。

- (void)generateRandomNumber
{
    self.answer = arc4random() % 100 + 1;
}

そのため、viewDidLoad() でこのメソッドを使用して初期乱数を生成し、リセット ボタンがある場合はそれを使用できます。

それが役に立てば幸い。

于 2013-10-11T17:33:47.813 に答える