c#尝试的计数器

时间:2014-11-07 05:48:35

标签: c# counter

我试图让名为“Guesses”的计数器保持一个猜测随机数的计数,并输出猜测数字的总尝试次数。我已经尝试将计数器声明保留为0和1,并且尝试猜测的次数始终为0或1.帮助将不胜感激,我将重新发布整个工作代码一旦弄清楚。这是我的代码。

    int Answer; // declares the Answer variable outside button event
    public frmGuess()
    {  // generates random number outside button event so does not change on button click
        InitializeComponent();
        Random rand = new Random(); 
        Answer = rand.Next(100) + 1; // makes it range 1 to 100
    }
    private void btnGuess_Click(object sender, EventArgs e)
    {
        int UserGuess;
        int Guesses = 0;     // start counter
        if (string.IsNullOrEmpty(txtGuess.Text)) // input validation check to make sure not blank and is a whole number integer
        {
            MessageBox.Show("Please enter a whole number between 1 and 100");
            return;
        }
        else
        {
            UserGuess = int.Parse(txtGuess.Text);  // variable assign and code run
            Guesses ++;
            if (UserGuess > Answer)
            {
                txtGuess.Text = "";
                lblAnswer.Text = "Too high, try again.";
            }
            else if (UserGuess < Answer)
            {
                txtGuess.Text = "";
                lblAnswer.Text = "Too low, try again.";
            }
            else
            {
                lblAnswer.Text = "Congratulations the answer was " + Answer + "!\nYou guessed the number in " + Guesses + " tries.\nTo play again click the clear button."; //victory statement
            }//end if
        } //end if
    } 
    private void btnClear_Click(object sender, EventArgs e)  // clears Answer label and Guess textbox
    {
        txtGuess.Text = "";
        lblAnswer.Text = "";
    }

    private void btnExit_Click(object sender, EventArgs e) // closes window
    {
        this.Close();
    }
}

}`

3 个答案:

答案 0 :(得分:1)

确实是的!这照顾了它。我认为我把随机数放在按钮点击之外,但没有把它用于反击 - 愚蠢。谢谢大家!工作代码是:

{
    int Answer; // declares the Answer variable outside button event
    int Guesses = 0;     // declares counter outside button event
    public frmGuess()
    { // generates random number outside button event so does not change on button click
        InitializeComponent();
        Random rand = new Random(); 
        Answer = rand.Next(100) + 1; // makes it range 1 to 100
    }
    private void btnGuess_Click(object sender, EventArgs e)
    {
        int UserGuess;
        if (string.IsNullOrEmpty(txtGuess.Text)) // input validation check to make sure not blank and is a whole number integer
        {
            MessageBox.Show("Please enter a whole number between 1 and 100");
            return;
        }
        else
        {
            UserGuess = int.Parse(txtGuess.Text);  // variable assign and code run

            Guesses ++; // adds 1 to attempts but doesn't count textbox blank or mistyping

            if (UserGuess > Answer)
            {
                txtGuess.Text = "";
                lblAnswer.Text = "Too high, try again.";
                Guesses++;
            }
            else if (UserGuess < Answer)
            {
                txtGuess.Text = "";
                lblAnswer.Text = "Too low, try again.";
                Guesses++;
            }
            else
            {
                lblAnswer.Text = "Congratulations the answer was " + Answer + "!\nYou guessed the number in " + Guesses + " tries.\nTo play again click the clear button.";
            }//end if
        } //end if
    } 
    private void btnClear_Click(object sender, EventArgs e)  // clears Answer label and Guess textbox
    {
        txtGuess.Text = "";
        lblAnswer.Text = "";
    }

    private void btnExit_Click(object sender, EventArgs e) // closes window
    {
        this.Close();
    }
}

} `

答案 1 :(得分:0)

这是一个范围问题。您当前在事件处理程序中定义了猜测,它会在每次单击按钮时重置计数器。如果您在表单级别定义它,即使作为属性或成员变量,该范围也将允许变量通过多个按钮单击事件保留其值。

答案 2 :(得分:0)

您正在点击活动中重置计数器。

int Answer; // declares the Answer variable outside button event
int Guesses = 0; // declare this outside button event, and initialize it to 0.
                 // initialization will happen when the Form object is created.

...

private void btnGuess_Click(object sender, EventArgs e)
{
    int UserGuess;
    // DO NOT reset the counter here. This line is the culprit that
    // resets the counter every time you click the button
    //int Guesses = 0;     // start counter
    ...
} 

...