0

配列から 10 個のランダムな質問が選択されるクラス用に、かなり堅実なクイズ ゲームを Android で作成しました。現在の動作方法は、ユーザーが EditText フィールドに回答を入力することです。また、単純なシャッフル アルゴリズムを使用して質問が重複しないようにする方法を見つけられたことも嬉しく思います。そのため、ユーザーに投げられるすべての質問は一意です (実際、それをかなり誇りに思っています)。

理想的には多肢選択式のゲームにしたかったのですが、時間が足りず、上記のように提出しました。しかし、私はゲームをより良く、ユーザーフレンドリーにする方法を考えてきました.EditTextの選択は理想的なIMOではないと思います. ということで、以下のように書き直そうと考えました。

  1. ランダムな質問が選択されます。
  2. 質問には 4 つのランダムな回答の選択肢が表示され、そのうちの 1 つが正解になります。
  3. 回答の選択には RadioButtons と RadioGroup を使用します。
  4. トリッキーな部分: 回答の選択肢を表示し、ランダムに並べ替えます。たとえば、次のようにします。
    • 質問 x が選択され、回答の選択肢が a、b、c、rightAnswer のランダムな順序で表示されます。
    • 次に、質問yが選択され、回答の選択肢はb、rightAnswer、c、aになります
    • 等...

それで、誰かがこれを達成する方法について正しい方向に向けることができるかどうか疑問に思っていました. 私は完全なコードを求めているのではなく、それについてもっと読んで理解するのに役立つ場所を求めているだけです。SOで見つけたように見えるのは、ランダムな質問を取得する方法だけです。

前もって感謝します!

4

2 に答える 2

1

答えを保持する配列を作成します。次に、0から[array.length]までの乱数を選択し、配列内のそのインデックスを正しい答えに設定します。すなわち:

int[] answers = new int[4];
answers[0] = getRandomAnswer();
answers[1] = getRandomAnswer();
answers[2] = getRandomAnswer();
answers[3] = getRandomAnswer();

int correctIndex = Random.nextInt(0,4); // Maybe off by 1? I didn't compile
answers[correctIndex] = correctAnswer;

これで、3つのランダムな回答と1つの正解を含む配列ができました。getRandomAnswer()メソッドが正解を返さないことを確認するか、この時点で配列をチェックして正解の複数のインスタンスを確認し、存在する場合は1つを除くすべてを削除する必要があります。

配列内の回答をRadioGroupに入力し、ユーザーがグループ内のラジオボタンの1つを選択したときに、correctIndex変数をチェックすることで、ユーザーが正しいかどうかを確認できます。

于 2012-05-04T16:28:27.377 に答える
1

おそらく、4 つのランダムな場所を排他的に設定するためのより効率的または適切な方法があると思われます。これが私の提案です。

    int setPlace[4] = {0,0,0,0};

    setPlace[0] = Random.nextInt(3) + 1;

    for (loop = 1; loop<=3; Loop++)
 {
    do 
    {
    fix1 = Random.nextInt(3) + 1;
    if ((fix1!=setPlace[0])&&(fix1!=setPlace[1])&&(fix1!=setPlace[2])(fix1!=setPlace[3]))
    {
    setPlace[loop]=fix1;
    fix1=0;
    }
    }
    while{fix1!=0} 
}
于 2012-05-04T17:08:07.513 に答える