C# 猜数字游戏:难度设置

C# 猜数字游戏:难度设置,c#,if-statement,C#,If Statement,这就是我生成随机数的方式,但我希望用户能够选择难度:easy=1-10,intermediate=1-50,hard=1-100。我想知道怎么才能做到这一点。任何帮助都将不胜感激 { class HiLow { private int number; public int Number { get { return number;

这就是我生成随机数的方式,但我希望用户能够选择难度:easy=1-10,intermediate=1-50,hard=1-100。我想知道怎么才能做到这一点。任何帮助都将不胜感激

{
    class HiLow
    {
        private int number;

        public int Number
        {
            get
            {
                return number;
            }
        }

        public HiLow(int taker)
        {
            number = new Random().Next(taker);
        }
    }
}

{
    class HiLowUI
    {
        public void Welcome()
        {
            Console.WriteLine("\nWelcome to the HighLow Game!" +
                "\n\nInstructions: \nTry to guess the number between the selected difficulty range." + 
                "\nIf you guess the right number you win!");

            Console.WriteLine("\nDifficulty: \n[1] (1-10) Easy \n[2] (1-50) Intermediate \n[3] (1-100) Hard");

        }
        public void Play()
        {
            Welcome();

            while (true)
            {
                HiLow hi = null;
                int number = hi.Number;
                int guess;
                int attempts = 0;

                int difficulty = PromptForInt("Select difficulty");
                if (difficulty == 1)
                {
                   hi = new HiLow(10);
                }
                else if (difficulty == 2)
                {
                    hi = new HiLow(50);
                }
                else if (difficulty == 3)
                {
                    hi = new HiLow(100);
                }

                for (guess = PromptForInt("\nEnter your guess! "); guess != number; guess = PromptForInt("\nEnter your guess! "))
                {
                    if (guess < number)
                    {
                        Console.WriteLine("Higher");
                        attempts++;
                    }
                    else if (guess > number)
                    {
                        Console.WriteLine("Lower");
                        attempts++;
                    }
                }
                Console.WriteLine("\nIt took you {0} attempts, but you've won!\n{1} was the correct number!\n", attempts, number);
                Console.WriteLine("Would you like to play again? (y/n)");

                if (Console.ReadLine() != "y") break;
            }
        }
        private int PromptForInt(string prompt)
        {
            int value;
            Console.Write(prompt);
            int.TryParse(Console.ReadLine(), out value);
            return value;
        }
    }
}
{
类丘
{
私有整数;
公共整数
{
得到
{
返回号码;
}
}
公共山丘(内塔)
{
数字=新随机数()。下一个(taker);
}
}
}
{
Hilowi类
{
公众欢迎
{
Console.WriteLine(“\n欢迎参加高低游戏!”+
“\n\n说明:\n尝试猜测所选难度范围之间的数字。”+
“\n如果你猜对了号码,你就赢了!”);
Console.WriteLine(\n困难:\n[1](1-10)简单\n[2](1-50)中间\n[3](1-100)硬);
}
公共游戏
{
欢迎();
while(true)
{
HiLow-hi=null;
整数=高数;
智力猜测;
int=0;
难度=提示(“选择难度”);
如果(难度==1)
{
hi=新HiLow(10);
}
否则如果(难度==2)
{
hi=新HiLow(50);
}
否则如果(难度==3)
{
hi=新HiLow(100);
}
for(guess=PromptForInt(“\n输入您的猜测!”);guess!=number;guess=PromptForInt(\n输入您的猜测!”)
{
如果(猜测<数字)
{
控制台。写入线(“更高”);
尝试++;
}
否则如果(猜测>数字)
{
控制台。写线(“下”);
尝试++;
}
}
Console.WriteLine(“\n您尝试了{0}次,但您赢了!\n{1}是正确的数字!\n”,尝试次数,数字);
Console.WriteLine(“您想再次播放吗?(y/n)”);
如果(Console.ReadLine()!=“y”)中断;
}
}
私有int-PromptForInt(字符串提示)
{
int值;
控制台。写入(提示);
int.TryParse(Console.ReadLine(),out值);
返回值;
}
}
}

当您有了用户的设置后,在HiLow的构造函数中添加一个选项以获得最大数量。使用该数字生成随机数。

在构造函数中:

public HiLow(int upperLimit)
{
    number = new Random().Next(upperLimit);
}
Play()
方法中,您可以将
HiLow
类实例化为:

HiLow hi = new HiLow(10);  // easy
HiLow hi = new HiLow(50);  // medium
HiLow hi = new HiLow(100); // hard
然后,在输入
Play()
方法之前,只需提示用户所需的难度级别,然后将他们选择的任何值传递给
HiLow()
构造函数

就我个人而言,我会将困难传递给
Play()
方法,并使用
switch()
if()
语句来确定要调用哪一个:

public void Play(int difficulty)
{
    while (true)
    {
        HiLow hi = null;
        if (difficulty == 0)      // Easy
        {
            hi = new HiLow(10);
        }
        else if (difficulty == 1) // Medium
        {
            hi = new HiLow(50);
        }
        else if (difficulty == 2) // Hard
        {
            hi = new HiLow(100);
        }
        else if (difficulty == 3) // Much harder
        {
            hi = new HiLow(5000);
        }
        else if (difficulty == 4) // Mwa-ha-ha
        {
            hi = new HiLow(99999999);
        }

        // ...
    }
}

所以所有HiLow hi=new HiLow(10)等都应该添加到Play()中,或者只添加一个?您可以将它们包装在一个
if()
语句中:
if(难度==0){hi=new HiLow(10);}否则if(难度==1){hi new HiLow(50;}…
等等。public HiLow(设置){number=new Random().Next(设置);}这就是我现在得到的,它说我有无效的参数。关于如何解决这个问题有什么想法吗?你在哪里定义了“设置”?它需要是
public HiLow(int-setting)
,而不仅仅是
…(setting)
.Ahh修复了这一问题,但当我运行它时,会出现一个错误,上面写着“System.NullReferenceException”,它发生在HiLow hi=null的部分;