-1

私は C# プログラミングに慣れていないので、ここで C# の専門家に尋ねる必要があります。開発を計画しているクイズ ゲーム アプリケーションにはどのような手法を使用すればよいでしょうか。クイズ アプリを次のようにしたいと思います。

1.) イギリスの首都は?
を。ロンドン
b. ワシントン
DC 東京
d. マニラ

2.) ロシアの首都は?
を。バンコク
b. 北京
c。イスラマバード
d. モスクワ

等....

Rand() を使用して質問をランダムに生成したい。質問は、ここで設定した順序ではなくランダムに配置する必要がありますが、宣言した 4 つの選択肢だけがクイズのセットに表示されます。チュートリアルへのリンクがあれば教えてください。私はこのアプリを開発するのが大好きですが、これを始める手がかりがありません。どんな助けでも本当に感謝しています。ありがとう!

4

3 に答える 3

6

これを行うには、さまざまな方法があります。質問と回答を簡単に管理できるオプションが必要な場合の方法は、質問と回答をXML ファイルに入れることです。その後、 XMLDocumentを使用して、実行時に質問と回答をロードできます。XML ファイルは次のようになります。

<?xml version="1.0" ?>
<quiz>
    <question>
         What is the capital city of Russia?
         <answers>
             <correctAnswer>Moscow</correctAnswer>
             <wrongAnswer>Bangkok</wrongAnswer>
             <wrongAnswer>Beijing</wrongAnswer>
             <wrongAnswer>Islamabad</wrongAnswer>
         </answers>
    </question>
</quiz>

XMLDocumentを使用して C# でこれを解析できます。

于 2012-10-18T14:50:16.970 に答える
3

まず、問題を理解する必要があります。要件を確認して、オブジェクトを考えてください。あなたには必ず「問い」と「答え」があります。各問題には4 つの回答があり、正解は 1 つだけです。したがって、最初の非常に単純なアプローチは次のようになります。

class Question
{
    public string QuestionText{ get; set; }
    public string AnswerA { get;set }
    public string AnswerB { get;set }
    public string AnswerC { get;set }
    public string AnswerD { get;set }
}

これは良いスタートですが、完璧ではありません。この質問オブジェクト内に正解も保存できるようになりました。しかし、この新しい特性を最大限に活用するには、答えをもう少し動的にすることが理にかなっています。

class Question
{
    public Question()
    {
        Answers = new string[4];
    }
    public string QuestionText{ get; set; }
    public string[] Answers { get;set; }
    public int CorrectAnswer {get;set; }
}

したがって、この小さなオブジェクトを使用して、次のようなすべての質問を作成できます。

var question = new Question();
question.QuestionText = "What color is snow?";
question.Answers[0] = "Red";
question.Answers[1] = "Yellow";
question.Answers[2] = "White";
question.Answers[3] = "Green";
question.CorrectAnswer = 2;

// ... more questions

var listOfQuestions = new List<Question>();
listOfQuestions.Add(question);

ランダムにソートする方法は、ここ SO で見つけるのが難しくない別のトピックです。

私は個人的にicemanindsのアイデアが好きです.彼の答えを使って私の基本的なアプローチを改善することができます.

于 2012-10-18T14:51:55.750 に答える
2

意図したデータ ソースとそのサイズは? データ ソースの形式を定義できる場合は、各行に 3 つまたは 4 つのフィールドがあり、何らかの区切り記号で区切られたテキスト ファイルを用意することをお勧めします。フィールドは、質問、正解、および質問と回答の両方が属するカテゴリを示す文字のリスト、または質問と回答の別のカテゴリのリストのいずれかになります。

最後のポイントを明確にするために、多くの多肢選択式テストでは、単純に 25 のプールからランダムに 10 の質問を選択し、各質問に対して、プールから 3 つのランダムな回答と正しい回答を出力すると、終了する可能性があります。 「三角形には何辺ありますか? (a) 正方形 (b) ユークリッド (c) 3 つの (d) ひし形」のような質問をしてください。コンピュート数十年前の雑誌の記事では、「差別」と呼ばれるものによってこの問題を解決する多肢選択クイズ ジェネレーターが提供されました。つまり、質問と回答にカテゴリを付け、各質問に対して、質問のカテゴリに適した回答のみを選択します。その記事がどのように行われたかは覚えていませんが、コーディングとデータ入力を簡単にするために、質問と回答のカテゴリを特定し、それぞれに文字を選択することをお勧めします. 上記の質問の場合、妥当なカテゴリは「13 未満の整数を書き出す」である可能性があるため、文字「Q」を任意に使用することを決定した場合、質問と回答の両方が「Q」のカテゴリになります。多くの場合、質問と回答の 1 つのカテゴリで十分です (「プログラムは機能しましたが、場合によっては、より洗練されたものを許可する必要がある場合があります (たとえば、「4 つの辺があり、向かい合った辺のペアが等しい形状は:」の場合、オプションとして「五角形」を提供するのが合理的かもしれません)。 、しかしおそらく「正方形」、「長方形」、または「ひし形」ではありません)。

複数の質問が同じ回答を持つ可能性をどのように処理するか、回答をランダムな順序でリストするか一貫した順序でリストするかなど、データセットの設計で考慮すべき問題がさらにいくつかあります (たとえば、「どのように五角形には多くの側面がありますか」という質問に対して、「(a) 8 (b) 5 (c) 6」よりも「(a) 3 (b) 5 (c) 6 (d) 8」のように答えをリストする方が適切かもしれません。 (d) 3")。

于 2012-10-18T15:05:27.077 に答える