2015-06-09 52 views
0

我想創建一個簡單的遊戲,玩家必須回答問題。到目前爲止,我只能顯示問題,但我試圖顯示與問題匹配的3個可能的答案。如何使questiontring出現匹配答案?

問題是雖然我可以顯示問題,但所有問題都會很快顯示出來。我想要的是當我開始遊戲時,它應該從第一個問題開始,然後等待1分鐘,然後顯示第二個問題,依此類推。這些問題必須隨機給出。我也想要顯示3個答案。

我有一個問題列表,我存儲了所有的問題和答案。整數是correctanswer。

這是我的代碼:

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參數或計時器來完成此操作。

爲了在您的問題下顯示答案,您必須爲每個答案調用DrawString方法。因此,您將有一個帶有4個DrawString調用的Draw方法:其中1個爲問題,另外3個爲答案。不要忘記更新每次調用DrawString的位置(Vector2參數)