使用While循环返回程序的起点

时间:2018-11-13 20:12:20

标签: c#

首先,对这个简单的问题感到抱歉,但由于我刚刚开始编码,因此无法独自处理。
我编写了这个小游戏。如果用户按下y键,我需要重新启动它。

我的问题是我想出了恢复生命,仪表和积分的方法,但是我无法固定随机数(我们需要找到随机数才能赢):它没有改变。

希望我的描述足够清楚:

static void Main(string[] args)
{
    int QuestionNumber = (new Random()).Next(1, 10);
    int life = 5;
    int meter = 0;
    int number;
    int points = 100;
    char selection = 'y';

    while (selection == 'y')
    {
        life = 5;
        meter = 0;
        points = 100;

        while (life > 0)
        {
            meter++;
            Console.Write("Enter a number: ");
            number = Convert.ToInt32(Console.ReadLine());

            if (number == QuestionNumber)
            {
                Console.WriteLine($"Congrats! You found the number at {meter}th and got {points} points!");
                break;
            }
            life--;
            points = points - 20;

            if (life == 0)
            {
                Console.WriteLine("Game over!");
            }
            else
            {
                if (number > QuestionNumber)
                {
                    Console.WriteLine("Down");
                }
                else
                {
                    Console.WriteLine("Up");
                }
            }
        }
        Console.Write("Do you want to countinue?(y/n)");
        selection = Convert.ToChar(Console.ReadLine());
    }
    Console.ReadKey();
}

2 个答案:

答案 0 :(得分:4)

更改此:

while (selection == 'y')
{
  life = 5;
  meter = 0;

为此,相反:

while (selection == 'y')
{
  QuestionNumber = (new Random()).Next(1, 10);
  life = 5;
  meter = 0;

通过这种方式,QuestionNumber就像从头开始实例化一样被重置。

答案 1 :(得分:2)

这是因为QuestionNumber在程序中只分配了一次值。为了更改QuestionNumber,您需要在while循环内为其分配一个新的随机值。