2015-06-09 2 views
0

Я пытаюсь создать простую игру, в которой игроки должны отвечать на вопросы. Пока я могу только показать вопрос, но я пытаюсь отобразить 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

Этот бит кода, вероятно, недостаточно для обеспечения хорошего ответа. Не знакомы с Monogame, но звучат для меня, как будто вам нужно проверить игровой движок, чтобы настроить таймеры и события. – Vlad

+0

да, но прежде, чем я сделаю это, я хочу, чтобы появился ответ – pu4cu

+0

Хорошо, вы должны добавить строки ответа к вашему методу рисования. Я вижу только вызываемый 'questionString', вы должны перебирать ответы и отображать их. – Vlad

ответ

0

Monogame структура обеспечивает game loop логику для вас. Это означает, что 2 метода вашего игрового класса будут вызываться повторно для каждого кадра. Метод Update, который используется для обновления переменных, необходимых для вашей игры, таких как пользовательские входы на клавиатуре или мыши. Метод Draw используется для отображения ваших игровых объектов.

Каждый раз, когда вызывается метод Draw, вы генерируете новое случайное число, которое может изменить вопрос. Это объясняет, почему ваши вопросы меняются так быстро. Чтобы исправить это, вы можете создать поле в своем классе для отслеживания текущего отображаемого вопроса и использовать это поле в методе Draw вместо случайного числа. Затем используйте метод Update для update текущий вопрос. Но, опять же, если вы не хотите, чтобы ваш вопрос менялся в каждом кадре, вы должны проверить прошедшее время перед обновлением своего поля. Вы можете сделать это с помощью параметра GameTime метода Update или с помощью таймера.

Для отображения ответов по вашему вопросу вы должны позвонить по методу DrawString для каждого из ваших ответов. Таким образом, у вас будет метод Draw с 4 вызовами DrawString: 1 для вопроса и 3 других ответа. Не забудьте обновить позицию (параметр Vector2) для каждого вызова DrawString