如何使问题字符串出现匹配答案?

时间:2015-06-09 22:56:09

标签: c# oop monogame

我正在尝试创建一个简单的游戏,玩家必须回答问题。到目前为止,我只能显示问题,但我正在尝试显示与问题匹配的3个可能答案。

问题在于,尽管我可以显示问题,但所有问题都会很快显示出来。我想要的是当我开始游戏时,它应该从第一个问题开始,然后等待1分钟,然后显示第二个问题,依此类推。问题必须随机提出。我还想要显示3个答案。

我有一个问题列表,我存储了所有问题和答案。 int是正确的。

这是我的代码:

private SpriteFont _verdana;
private List<Question> questions = new List<Question>();

public class Question
{
    public string questionString;
    public List<string> answers = new List<string>();
    public int correctAnswer = 0;
    public bool answered = false;

    public Question(string question, string answer1, string answer2, string answer3, int correctAnswer)
    {
        questionString = question;
        answers.Add(answer1);
        answers.Add(answer2);
        answers.Add(answer3);
        this.correctAnswer = correctAnswer;
    }
}

public Level(Game1 game)
{
    _verdana = game.Content.Load<SpriteFont>("Verdana");

        Question q = new Question("Question1", 
            "Answer1", 
            "Answer2", 
            "Answer3", 
            0);
        questions.Add(q);
        q = new Question("Question2?", 
            "Answer1.", 
            "Answer2.", 
            "Answer3.", 
            0);
}

Random r = new Random();

public void Draw(SpriteBatch spriteBatch)
{
            spriteBatch.DrawString(_verdana, questions[r.Next(0, questions.Count - 1)].questionString, new Vector2(80, 325), Color.White);

}

1 个答案:

答案 0 :(得分:0)

Monogame 框架为您提供game loop逻辑。这意味着将为每个帧重复调用游戏类的2种方法。 Update方法,用于更新游戏所需的变量,例如键盘或鼠标上的用户输入。 Draw方法用于显示您的游戏实体。

每次调用Draw方法时,都会生成一个可以更改问题的新随机数。这解释了为什么您的问题变化如此之快。要解决此问题,您可以在班级中创建一个字段来跟踪当前显示的问题,并在Draw方法中使用此字段而不是随机数。然后使用Update方法更新当前显示的问题。但是,如果您不希望在每个帧中看到您的问题发生变化,则必须在更新字段之前检查已用时间。您可以使用Update方法的GameTime参数或使用计时器来执行此操作。

要显示问题的答案,您必须为每个答案调用DrawString方法。因此,您将拥有一个带有4个DrawString调用的Draw方法:1个用于问题,3个用于答案。不要忘记每次调用DrawString

时更新位置(Vector2参数)