2013-05-14 57 views
0

我創建了一個要求用戶猜測數字的表單。我在100個整數上創建了一個數組,創建了一個方法來獲得隨機數來填充數組。所有工作正常,但我需要創建另一種方法,一旦做出100次猜測,數組就會重置爲0,並且似乎讓我繼續前進並繼續進行當前設置。如何確保我的陣列正在填充,而不是每按一下按鈕就重新啓動,那麼如何重置它?這再次運行很好,只是不滿足我所有的要求。如何重新啓動一次填充窗體窗體的數組?

這是從我的陣列和方法,並在那裏我在調用它的代碼:

int[] rndArray = new int[100]; 
    int wrong = 1; 
    int right = 1; 


    public void getNumbers() 
    { 
     Random random = new Random(); 
     for (int x = 0; x < rndArray.Length; x++) 
     { 
      rndArray[x] = random.Next(1, 100); 
     } 

    } 

    public Form1() 
    { 
     getNumbers(); 
     InitializeComponent(); 
    } 

然後,我有兩個按鈕看,如果猜測是正確的,並讓他們再猜。

private void Guess_Click(object sender, EventArgs e) 
    { 
     bool num = true; 
     for (int x = 0; x < rndArray.Length; x++) 
     { 
       if (Convert.ToInt32(textBox1.Text) == rndArray[x]) 
       { 
        result.Text = "You Win!"; 
        num = true; 
       } 
       else 
       { 
        result.Text = "Sorry - you loose; the number is: " + rndArray[x]; 
        num = false; 
       } 
     } 
     if (num == true) 
      correct.Text = "Correct: " + right++; 
     else 
      incorrect.Text = "Incorrect: " + wrong++; 

     mouseHere.Enabled = false; 
     Guess.Enabled = false; 
     nextGuess.Enabled = true; 
    } 

    private void nextGuess_Click(object sender, EventArgs e) 
    { 
     mouseHere.Enabled = true; 
     Guess.Enabled = true; 
     nextGuess.Enabled = false; 
     hint.Text = "??"; 
     textBox1.Text = ""; 
     result.Text = ""; 
     getNumbers(); 

    } 

我再次調用該方法,因此它不會爲每個猜測生成相同的數字。

+0

所以你只需要保留一個計數器來進行猜測次數,並在100時再次填充數組呢? – 2013-05-14 14:24:36

+1

你可能只需要調用'getNumbers()',只要他們猜對了。 – ja72 2013-05-14 16:39:34

回答

1

所有你需要的是一個計數器:

int count = 0; 
    private void Guess_Click(object sender, EventArgs e) 
    { 
     if (count < 100) 
     { 
      count++; 
      // checks user input ... 
     } 
     else 
     { 
      count = 0; 
      // reset the array by getting fresh numbers 
      getNumbers(); 
     } 
    } 

,你也可以重新在一個循環數組並設置它的成員的值0

2

爲什麼不創建一個GuessingGame類,並提出一個事件時,第100次猜測?您可以重置數組並猜測計數器。

喜歡的東西:

public class GuessingGame { 
    private int[] RandomNumbers; 
    private GuessCount = 0; 

    // constructor 
    public GuessingGame() { 
     this.guessCount = 0; 
     this.randomNumbers = this.RandomNumberGenerator(); 
    } 

    public void AddGuess(int guess) { 
     // increment guessCount 
     // check for a winner and/or 100th guess 
     // raise a correct guess event if correct 
     // raise 100th guess event if 100th guess occurs 
    } 

    private int[] RandomNumberGenerator() { 
     // return your array of random numbers 
    } 

    ...more stuff... 
} 

你想聲明幾個簡單的事件處理程序類做任何你需要他們做的,然後從GuessingGame類解僱他們。編寫代碼有點多,所以我會讓你自己去做。這應該讓你開始正確的OO方向。

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx。這是一個非常有用的事件教程。

相關問題