[英]Random number resets every time click event handle executes
您好,我目前正在嘗試使用C#中的Windows窗體應用制作猜謎游戲。 我不知道該怎么做,所以我的隨機數只能生成一次。 例如,每次我單擊我的猜測按鈕(如guessButton_Click中所示)時,它都會生成一個不同的隨機數。 我只希望在此代碼運行期間僅生成一次隨機數。 我該怎么做? 任何幫助是極大的贊賞!
public partial class randomNumberForm : Form
{
Random ranNum = new Random();
int userGuess = 0;
int numberOfGuesses = 0;
public randomNumberForm()
{
InitializeComponent();
}
public void randomNumberForm_Load(object sender, EventArgs e)
{
}
public void guessButton_Click(object sender, EventArgs e)
{
int randomNumber = ranNum.Next(101) + 1;
if (int.TryParse(inputTextBox.Text, out userGuess))
{
if (userGuess < randomNumber)
{
answerLabel.Text = "Too low, try again.";
numberOfGuesses++;
guessLabel.Text = numberOfGuesses.ToString();
}
else if (userGuess > randomNumber)
{
answerLabel.Text = "Too high, try again.";
numberOfGuesses++;
guessLabel.Text = numberOfGuesses.ToString();
}
else if (userGuess == randomNumber)
{
answerLabel.Text = "You guessed the right number!";
numberOfGuesses++;
guessLabel.Text = numberOfGuesses.ToString();
}
}
else
{
MessageBox.Show("Please enter a valid integer.");
}
}
看看將行放置在哪里int randomNumber = ranNum.Next(101) + 1;
-這是您的按鈕點擊事件要做的第一件事,它將在每次單擊按鈕時運行。
在類頂部將您的randomNumber
變量聲明為私有int。 這將使它成為一個類變量,該變量只能從類本身內部訪問。
移動您的代碼行randomNumber = ranNum.Next(101) + 1;
進入randomNumberForm_Load
函數。 這將在表單加載事件中填充randomNumber
變量。
您必須具有全局變量。
見下面的例子
public partial class randomNumberForm : Form { Random ranNum = new Random(); int userGuess = 0; int numberOfGuesses = 0; int? randomNumber; public randomNumberForm() { InitializeComponent(); } public void randomNumberForm_Load(object sender, EventArgs e) { } public void guessButton_Click(object sender, EventArgs e) { if (!randomNumber.HasValue) // first time run randomNumber = ranNum.Next(101) + 1; if (int.TryParse(inputTextBox.Text, out userGuess)) { if (userGuess < randomNumber) { answerLabel.Text = "Too low, try again."; numberOfGuesses++; guessLabel.Text = numberOfGuesses.ToString(); } else if (userGuess > randomNumber) { answerLabel.Text = "Too high, try again."; numberOfGuesses++; guessLabel.Text = numberOfGuesses.ToString(); } else if (userGuess == randomNumber) { answerLabel.Text = "You guessed the right number!"; numberOfGuesses++; guessLabel.Text = numberOfGuesses.ToString(); } } else { MessageBox.Show("Please enter a valid integer."); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.