-1

我是 C# 编程的新手,所以我需要在这里询问 C# 专家,我应该使用什么技术来开发我计划开发的问答游戏应用程序。我希望我的测验应用程序是这样的:

1.) 英国的首都是哪里?
一种。伦敦
B. 华盛顿特区
C. 东京
D. 马尼拉

2.) 俄罗斯的首都是哪里?
一种。曼谷
B. 北京
C. 伊斯兰堡
D. 莫斯科

ETC....

我希望使用 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 个可能的答案,只有一个是正确的。所以第一个非常简单的方法看起来像这样。

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

您的预期数据源是什么,它有多大?如果您可以定义数据源的格式,我建议您使用一个文本文件,其中每行包含三个或四个字段,由某种分隔符分隔。这些字段可以是问题、正确答案,以及指示问题和答案都属于的类别的字符列表,或者是问题的类别列表和答案的类别列表。

为了澄清最后一点,在许多多项选择题测试中,如果一个人简单地从 25 个问题中随机选择 10 个问题,然后为每个问题从池中打印三个随机答案以及正确答案,则可能会结束提出这样的问题:“三角形有几条边?(a)正方形(b)欧几里得(c)三个(d)菱形”。一个计算!几十年前的杂志文章提供了一个多项选择测验生成器,它通过所谓的“区分”解决了这个问题——将类别附加到问题和答案,并且为每个问题只选择适合问题类别的答案。我不记得那篇文章是怎么做的,但为了简化编码和数据输入,我建议您识别问题和答案的类别,并为每个选择一个字母。对于上述问题,一个合理的类别可能是“写出小于 13 的整数”,因此如果任意决定使用字符“Q”,那么问题和答案都会有一个“Q”类别。在许多情况下,一个单一的问答类别就足够了(我认为'程序有效,但在某些情况下,可能需要允许更复杂的东西(例如,对于“具有四个边且成对对边相等的形状是:”,提供“五边形”作为选项可能是合理的,但可能不是“正方形”、“矩形”或“菱形”)。

在数据集的设计中还有一些问题需要考虑,例如它应该如何处理多个问题可能具有相同答案的可能性,以及答案应该以随机顺序还是一致顺序列出(例如“如何五边形有很多边”,最好将答案列为“(a)三(b)五(c)六(d)八”而不是“(a)八(b)五(c)六(d) 三")。

于 2012-10-18T15:05:27.077 回答