如何重新启动数组一旦填充在windows窗体上



我创建了一个表单,要求用户猜测数字。我创建了一个100 int的数组,创建了一个方法来获取随机数来填充数组。一切都很好,但我需要创建另一种方法,一旦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();
    } 

我再次调用该方法,这样它就不会为每次猜测生成相同的数字。

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

你只需要一个计数器:

    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

最新更新