数学游戏难度设定

时间:2017-12-07 17:58:22

标签: c#

我正在尝试制作现在正在添加的简单数学游戏,我想添加困难,所以我可以选择,如果我想要1-10或10-20的数字,我使用随机的它。一切都是控制台,我可以为困难写数字。

    Random numberGenerator = new Random();
    Console.WriteLine("what what difficulty you want?");
    Console.WriteLine("1 for 1-10\n2 for 10-20\n3 for 15-40");
    Console.Write("i want:");
    int hardness = Convert.ToInt32(Console.ReadLine());
    if (hardness == 1)
    {
        goto hardness1;
    }

hardness1:
    int num01 = numberGenerator.Next(1, 11);
    int num02 = numberGenerator.Next(1, 11);
    int num03 = numberGenerator.Next(1, 11);
    int num04 = numberGenerator.Next(1, 11);
    if (answer == 1) {
        goto startofadding;
    }

hardness2:
    int num01 = numberGenerator.Next(10, 21)
    int num02 = numberGenerator.Next(10, 21)
    int num03 = numberGenerator.Next(10, 21)
    int num04 = numberGenerator.Next(10, 21)
    if (answer == 1)
    {
        goto startofadding;
    }

startofadding:
    Console.WriteLine("num01 = " + num01 + " and num02 = " + num02 + " this is " + i + " loop ");
    Console.WriteLine("answer is " + (num01 + num02));

    Console.WriteLine("what is " + num01 + " + " + num02 + " ?");
    Console.Write("Answer is: ");
    int answer1 = Convert.ToInt32(Console.ReadLine());
    if (answer1 == num01 + num02)
    { 
        Console.WriteLine("correct answer");
        Console.WriteLine("\n");
 

我正在尝试使用gotos,所以如果选择了难度,它可以采用它需要的数字,但它给了我:

  

名为'num01'的局部变量或函数已在范围

中定义

错误,我知道它是什么,但我不知道如何解决它。我做错了什么或者有更好的方法吗?如果有什么不清楚,请询问更多细节和更多代码,试图解释它尽可能好

1 个答案:

答案 0 :(得分:2)

  

名为'num01'的局部变量或函数已在范围

中定义

您已经在num01标签下定义了hardness1

您可以通过仅声明一次变量来修复它。不要在下一个标签下重新声明相同的变量,因为它在同一个块范围内。

一旦你开始工作,就摆脱goto。在这种情况下,switch语句可能是最简单的方法。

您可以将if条件和hardness0x块替换为:

switch(hardness)
{
    case 1:
    // code for hardness 1
    break;
    case 2:
    // code for hardness 2... etc.
    break;
}

// Code under startofadding follows. No need for goto or goto-labels

您下一步将尝试完全摆脱switch语句,这将大大简化您的代码。