尝试在C#中重试后随机生成答案

时间:2019-11-30 03:47:53

标签: c# random

babel

大家好,只想问一个问题。 我试图在终端中构建“猜数字”游戏,玩家必须根据给定的数字范围猜数字。 我尝试使 answer 随机生成,从而生成Random类。 并在重试后将答案随机化。 问题是,每次重试后, answer 仍然相同。 我不确定我在哪里做错了。 感谢您的帮助,也很抱歉提出noob问题。

2 个答案:

答案 0 :(得分:0)

您需要外部循环才能在结束后开始新游戏:

请参阅下面的骨架程序以及必要的控制流程。

class Program
{
    static void Main(string[] args)
    {
        bool retry = false;
        do
        {
            // start of game
            bool gameOver = false;
            int turn = 3;
            do
            {
                // game here
                // set gameOver when guess is corrent
                turn--;
            } while (turn>0 && !gameOver);
            // post game scores
            // ask to retry
        } while (retry);
        // end here
    }
}

答案 1 :(得分:0)

我已删除您的代码

using System;

namespace Test
{
    class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine("Enter num1");
            int num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter num2");
            int num2 = int.Parse(Console.ReadLine());
            bool GameOver = false;
            int turn = 3;
            Random random = new Random();
            int answer = random.Next(num1, num2);
            // string input = "";

            Console.WriteLine("Hello, welcome to the guess a number challenge");

            while (!GameOver)
            {
                if (turn != 0)
                {
                    turn--;
                    Console.WriteLine($"Please Select number between {num1} to {num2}:");
                    int SelectedNumber = int.Parse(Console.ReadLine());
                    if (SelectedNumber < answer && SelectedNumber >= num1)
                    {
                        System.Console.WriteLine("Almost there, just the number is too small\n");
                    }
                    else if (SelectedNumber > answer && SelectedNumber <= num2)
                    {
                        System.Console.WriteLine("Your number is too big\n");
                    }
                    else if (SelectedNumber == answer)
                    {
                        System.Console.WriteLine("CONGRATULATIONS!!!! You guess it right\n");
                        GameOver = true;
                        retry();
                    }
                    else
                    {
                        System.Console.WriteLine("Your number is out of range\n");
                    }
                }
                else
                {
                    System.Console.WriteLine($"GAME OVER!!!! The answer is {answer}");
                    GameOver = true;
                    retry();
                }

                void retry()
                {
                    System.Console.WriteLine("Would you like to retry? Y/N");
                    string input = Console.ReadLine();
                    string ConsoleInput = input.ToLower();
                    if (ConsoleInput == "y")
                    {
                        answer = random.Next(num1, num2);
                        GameOver = false;
                        turn = 3;
                    }
                    else if (ConsoleInput == "n")
                    {
                        GameOver = true;
                    }
                    else
                    {
                        Console.WriteLine("Invalid input");
                        retry();
                    }
                }
            }
        }
    }
}