C# 猜数字游戏:难度设置
这就是我生成随机数的方式,但我希望用户能够选择难度:easy=1-10,intermediate=1-50,hard=1-100。我想知道怎么才能做到这一点。任何帮助都将不胜感激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;
{
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的部分;