如何重新启动一次填充窗体窗体的数组?
问题描述:
我创建了一个要求用户猜测数字的表单。我在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();
}
我再次调用该方法,因此它不会为每个猜测生成相同的数字。
答
所有你需要的是一个计数器:
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。这是一个非常有用的事件教程。
所以你只需要保留一个计数器来进行猜测次数,并在100时再次填充数组呢? – 2013-05-14 14:24:36
你可能只需要调用'getNumbers()',只要他们猜对了。 – ja72 2013-05-14 16:39:34