I am trying to create a simple game where players have to answer questions. So far I can only display the question, but I am trying to display the 3 possible answers that are matched to the question.
The problem is that although I can display the questions, all questions will quickly be shown. What I want is when I start the game, it should start with the first question, then wait 1 minute, then display the second question, and so on. The questions have to be given at random. I also want the 3 answers to be displayed.
I have a questions list where I store all my questions and answers. The int is the correctanswer.
This is my code:
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 framework provides the
game loop
logic for you. This means that 2 methods of your game class will be called repeatedly for each frame. TheUpdate
method which is used to update variables needed for your game such as user inputs on keyboard or mouse. TheDraw
method is used for displaying your game entities.Each time the
Draw
method is called, you generate a new random number that can change the question. This explains why your questions change so quickly. To fix this, you can create a field in your class to track the currently displayed question and use this field in theDraw
method instead of the random number. Then use theUpdate
method to update the currently displayed question. But, again if you don't want to see your question change at each frames, you must check the elapsed time before updating your field. You can do this with the GameTime parameter of theUpdate
method or with a timer.For displaying the answers under your question, you must call the
DrawString
method for each of your answers. So you will have aDraw
method with 4 DrawString calls: 1 for the question and the 3 others for the answers. Don't forget to update the position (the Vector2 parameter) for each call to DrawString