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();

    } 

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

4

2 回答 2

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。这是一个非常有用的事件教程。

于 2013-05-14T14:52:16.947 回答
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.

于 2013-05-14T14:26:55.767 回答