每次单击事件句柄执行时,随机数都会重置

Azo*_*kee 1 c#

您好我正在尝试使用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.");
        }

    }
Run Code Online (Sandbox Code Playgroud)

use*_*620 6

看看你放置线的位置int randomNumber = ranNum.Next(101) + 1;- 这是你的按钮点击事件的第一件事,它会在每次点击按钮时运行.

将您的randomNumber变量作为私有int 声明在类的顶部.这将使它成为一个类变量,只能从类本身中访问.

将您的代码行移动randomNumber = ranNum.Next(101) + 1;randomNumberForm_Load函数中.这将填充randomNumber表单加载事件上的变量.