如何使匹配的答案与问题串出现

本文关键字:问题 答案 何使匹 | 更新日期: 2023-09-27 17:54:39

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

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

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

这是我的代码:

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);
}

如何使匹配的答案与问题串出现

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

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

为了显示问题下的答案,您必须为每个答案调用DrawString方法。所以你将有一个Draw方法与4 DrawString调用:1的问题和其他3的答案。不要忘记在每次调用DrawString

时更新位置(Vector2参数)