如何重新启动一次填充窗体窗体的数组?

如何重新启动一次填充窗体窗体的数组?

问题描述:

我创建了一个要求用户猜测数字的表单。我在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

所有你需要的是一个计数器:

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

为什么不创建一个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。这是一个非常有用的事件教程。