Использование логической переменной с оператором if? - PullRequest
2 голосов
/ 06 мая 2020

В настоящее время я пытаюсь сделать базовую c игру-кликер, чтобы начать учить себя делать C#, и я смог решить большинство проблем с этой частью, но пока не смог. Правильно, я не программирую покупное обновление, которое само по себе генерирует деньги, что, как мне кажется, я получил, но есть ошибка с одним из операторов if, и я не знаю, как ее исправить. Кто-нибудь еще знает, что я сделал не так?

Код:

    private int a = 0;
    private void flatButton1_Click(object sender, EventArgs e)
    {
        a++;
        flatTextBox1.Text = a.ToString($"Knowledge: {a}");
    }

    private void flatButton2_Click(object sender, EventArgs e)
    {
        if (a >= 50)
        {
            bool upgrade1 = true;
        }
        if (upgrade1 == true)
        {
            for ( ; ; )
            {
               a = a + (a++ * 2);
            }
        }

Единственное, что выдает ошибку, это if (upgrade1 = true), update1 - это ошибка, в нем говорится, что имя 'upgrade1' не существуют в текущем контексте.

Ответы [ 3 ]

2 голосов
/ 06 мая 2020

Вы объявили переменную «upgrade1» в области действия 1-го оператора IF, поэтому ее можно использовать только в этом операторе IF. Вам необходимо объявить глобальную переменную «upgrade1». (вне оператора IF

 private int a = 0;
private void flatButton1_Click(object sender, EventArgs e)
{
    a++;
    flatTextBox1.Text = a.ToString($"Knowledge: {a}");
}

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1 =false;
    if (a >= 50)
    {
       upgrade1 = true;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }
1 голос
/ 06 мая 2020

Это потому, что вы определили upgrade1 в своем первом операторе if, поэтому второй не может его достичь.

Измените свой код на этот:

private int a = 0;
private void flatButton1_Click(object sender, EventArgs e)
{
    a++;
    flatTextBox1.Text = a.ToString($"Knowledge: {a}");
}

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1;
    if (a >= 50)
    {
       upgrade1 = true;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }
}
1 голос
/ 06 мая 2020

Вы должны помнить об областях при написании кода. Причина, по которой ваш код не работает, заключается в том, что оператор if, проверяющий, истинно ли обновление1, не знает, что переменная upgrade1 вообще существует. Вы должны переместить определение переменной за пределы одной области видимости, чтобы проверка оператора if знала, о чем вы говорите. Надеюсь, это поможет!

Это должно решить вашу проблему:

private void flatButton2_Click(object sender, EventArgs e)
{
    bool upgrade1;
    if (a >= 50)
    {
        upgrade1 = true;
    }
    else
    {
        upgrade1 = false;
    }
    if (upgrade1 == true)
    {
        for ( ; ; )
        {
           a = a + (a++ * 2);
        }
    }
}
...