首页 > 解决方案 > C#问答游戏:右单选按钮标签得分

问题描述

我正在 C# 中的 Windows 窗体应用程序中制作一个测验游戏项目,并尝试使其正确的单选按钮单击在标签上给出 1 分,在错误答案上给出 0 分。组框中有 4 个单选按钮,其中一个是正确答案。我在代码中遇到的问题是,如果我在第一个单选按钮中输入一个正确答案,然后继续到下一个 groupboxes 问题,它不会添加分数,所以假设前 2 个 groupbox 问题都是正确的,它添加的第一个,所以分数是 1,然后单击下一个它只是保持 1。我需要在代码中添加什么才能计算答案吗?

private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                int score = 1;
                label1.Text = score.ToString();
                score = score += 1;
                score.ToString();
            }


 private void radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton5.Checked)
            {
                int score = 1;
                label1.Text = score.ToString();
                score = score += 1;
                score.ToString();
            }

第一个单选按钮是第一个组合框的正确答案,它将标签加 1。在第二个单选按钮上,它应该向标签添加 1 分,所以总分应该是 2,我做错了什么?

标签: c#radio-buttonlabel

解决方案


在方法之外定义一个新的成员变量。然后您可以从此类中的每个方法访问它。另外:+= 1 已经将 1 加到 score 上,所以你不必做 score = score += 1。

private int _score = 0;

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        {
            _score += 1;
            label1.Text = _score.ToString();
        }
    }

    private void radioButton5_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton5.Checked)
        {
            _score += 1;
            label1.Text = _score.ToString();
        }
     }

您应该做的下一件事可能是考虑将计算和 UI 更新外包给新方法。例如:

private void AddToScore(int points)
{
    _score += points;
} 

所以你可以说:

if (radioButton5.Checked)
{
    AddToScore(5); //Adds 5 points to score
    label1.Text = _score.ToString();
}

推荐阅读