C # викторина: правильная оценка радиокнопки - PullRequest
0 голосов
/ 09 апреля 2019

Я делаю проект игры-викторины в приложении Windows Forms на C # и пытаюсь сделать так, чтобы при правильном щелчке по радиокнопке был набран 1 балл на ярлыке и 0 - на неправильном ответе.В групповом ящике 4 радиокнопки, и один из них - правильный ответ.Проблема, с которой я столкнулся в коде, заключается в том, что если я добавлю один правильный ответ в первую радиокнопку, а затем продолжу на следующие вопросы групповых блоков, это не добавит оценку, поэтому предположим, что первые 2 вопроса групповых блоков являются правильными,первый добавляет, так что счет равен 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, что я делаю не так?

1 Ответ

0 голосов
/ 09 апреля 2019

Определить новую переменную-член вне методов. Затем вы можете получить к нему доступ из любого метода этого класса. Также: + = 1 уже добавляет 1 к баллу, поэтому вам не нужно делать счет = балл + = 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();
        }
     }

Следующее, что вы должны сделать, это, вероятно, подумать о том, чтобы передать вычисления и обновление пользовательского интерфейса на новые методы. E.G.:

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

Так что вы могли бы сказать вместо этого:

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