首页 > 解决方案 > 尝试在 C# 中重试后随机生成答案

问题描述

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {   

            int num1 = int.Parse(args[0]);
            int num2 = int.Parse(args[1]);            
            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")
                    {
                        GameOver = false;
                        turn = 3;
                    } else if(ConsoleInput == "n")
                    {
                        GameOver = true;
                    } else
                    {
                        Console.WriteLine("Invalid input");
                        retry();
                    }
                }
            }
        }
    }
}

大家好,只是想问一个问题。我尝试在终端中构建“猜数字”游戏,玩家必须根据给定的数字范围猜测数字。我试图让答案随机生成,因此是 Random 类。重试后答案将随机化。问题是,每次重试后,答案还是一样。我不确定我在哪里做错了。感谢您的帮助,对于菜鸟问题​​感到抱歉。

标签: c#random

解决方案


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

请参阅下面具有必要控制流的框架程序。

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
    }
}

推荐阅读