测验游戏应用程序

时间:2012-10-18 14:35:14

标签: c#

我是C#编程的新手,所以我需要在这里问C#专家,我应该使用哪些技巧来开发我正在计划开发的测验游戏应用程序。我想我的测验应用程序是这样的:

  

1。)英国的首都是什么?
一个。伦敦
b。华盛顿特区.c。东京马尼拉

     

2。)俄罗斯的首都是什么?
一个曼谷
b。北京
c。伊斯兰堡的d。莫斯科

     

... ETC

我希望使用Rand()随机生成问题。这些问题应该是随机放置的,而不是我在这里设置的顺序,但是我声明的那4个选项仍然是唯一显示在测验集中的选项。如果您有任何教程链接,请给我,以便我可以学习它。我真的很喜欢开发这个应用程序,但我没有任何线索来启动它。真的很感激任何帮助。谢谢!

3 个答案:

答案 0 :(得分:6)

有很多不同的方法可以做到这一点。如果您希望能够轻松维护问题和答案的选项,那么可以将它们放在XML file中。然后,您可以使用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#中解析此问题。

答案 1 :(得分: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上难以找到的主题。

我个人喜欢冰人的想法,你可以用他的答案改进我的基本方法。

答案 2 :(得分:2)

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

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

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