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