我正在尝试创建一个简单的游戏,玩家必须回答问题。到目前为止,我只能显示问题,但我正在尝试显示与问题匹配的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);
}
答案 0 :(得分:0)
Monogame 框架为您提供game loop
逻辑。这意味着将为每个帧重复调用游戏类的2种方法。 Update
方法,用于更新游戏所需的变量,例如键盘或鼠标上的用户输入。 Draw
方法用于显示您的游戏实体。
每次调用Draw
方法时,都会生成一个可以更改问题的新随机数。这解释了为什么您的问题变化如此之快。要解决此问题,您可以在班级中创建一个字段来跟踪当前显示的问题,并在Draw
方法中使用此字段而不是随机数。然后使用Update
方法更新当前显示的问题。但是,如果您不希望在每个帧中看到您的问题发生变化,则必须在更新字段之前检查已用时间。您可以使用Update
方法的GameTime参数或使用计时器来执行此操作。
要显示问题的答案,您必须为每个答案调用DrawString
方法。因此,您将拥有一个带有4个DrawString调用的Draw
方法:1个用于问题,3个用于答案。不要忘记每次调用DrawString