C#控制台随机数猜测游戏

C#控制台随机数猜测游戏,c#,if-statement,console-application,C#,If Statement,Console Application,我正在做一个随机数字猜测游戏,作为一个c#控制台程序。代码和工作都完成了。但是,有一部分我想做得更好: 我声明了我创建的Guess类的一个实例,现在如何使这部分更有效 int counter = 0; do { myGuess.UserGuess = GetUserGuess(); //read user guess if (myGuess.Compair() == "match") { Console.WriteLine("\n\t Correct!Yo

我正在做一个随机数字猜测游戏,作为一个c#控制台程序。代码和工作都完成了。但是,有一部分我想做得更好: 我声明了我创建的
Guess
类的一个实例,现在如何使这部分更有效

int counter = 0;
do
{
    myGuess.UserGuess = GetUserGuess(); //read user guess
    if (myGuess.Compair() == "match")
    {
        Console.WriteLine("\n\t Correct!You WIN !");
    }


    else if (myGuess.Compair() == "high")
    {
        if (counter < 3)
            Console.WriteLine("\n\tTry a lower number,");
        else
            Console.WriteLine("\n\tSorry you LOSE !, The right number is " + myGuess.RndNum);

        counter++;
    }

    else if (myGuess.Compair() == "low")
    {
        if (counter < 3)
            Console.WriteLine("\n\tTry a higher number,");
        else

            Console.WriteLine("\n\tSorry you LOSE !, The right number is " + myGuess.RndNum);
        counter++;
     }


} while (myGuess.Compair() != "match" && counter < 4);
int计数器=0;
做
{
myGuess.UserGuess=GetUserGuess();//读取用户猜测
if(myGuess.Compair()=“匹配”)
{
Console.WriteLine(“\n\t正确!您赢了!”);
}
else if(myGuess.Compair()=“高”)
{
如果(计数器<3)
Console.WriteLine(“\n\t请输入一个较小的数字,”);
其他的
Console.WriteLine(“\n\t对不起,您输了,正确的数字是”+myGuess.RndNum);
计数器++;
}
else if(myGuess.Compair()=“低”)
{
如果(计数器<3)
Console.WriteLine(“\n\t请输入更高的数字,”);
其他的
Console.WriteLine(“\n\t对不起,您输了,正确的数字是”+myGuess.RndNum);
计数器++;
}
}while(myGuess.Compair()!=“匹配”&计数器<4);
提前感谢。

Compair()函数是什么样的?对于更简单的函数,它似乎可以返回整数而不是字符串。这方面的一个例子如下所示:

// just an example implementation
public int Compair() {
   if (UserGuess < actualValue) return -1;
   if (UserGuess > actualValue) return 1;
   return 0;
}
//只是一个示例实现
公共公司{
if(UserGuessactualValue)返回1;
返回0;
}
然后你的日常工作变成:

int counter = 0;
bool success = false;

do
{
    myGuess.UserGuess = GetUserGuess();
    int compair= myGuess.Compair()
    switch (compair) {
      case 0:
        Console.WriteLine("\n\t Correct!You WIN !");
        success = true;
        break;
      case 1:
      case -1:
        if (counter < 3) Console.WriteLine("\n\tTry a {0} number,", compair == -1 ? "lower" : "higher");
        break;
    }

    counter++;
    if (counter >= 3 && !success)
      Console.WriteLine("\n\tSorry you LOSE !, The right number is " + myGuess.RndNum);
  } while (!success && counter < 4);
int计数器=0;
布尔成功=假;
做
{
myGuess.UserGuess=GetUserGuess();
int compair=myGuess.compair()
交换机(compair){
案例0:
Console.WriteLine(“\n\t正确!您赢了!”);
成功=真实;
打破
案例1:
案例1:
如果(计数器<3)Console.WriteLine(“\n\t输入一个{0}号,”,compair==-1?“较低”:“较高”);
打破
}
计数器++;
如果(计数器>=3&&!成功)
Console.WriteLine(“\n\t对不起,您输了,正确的数字是”+myGuess.RndNum);
}而(!success&&counter<4);
那就够了!这应该更快,因为它不使用字符串比较,它可能更容易阅读,并且应该修复一些逻辑问题


注意-我对属性的使用做了一些假设,所以这个示例可能不会在get之外编译,但它应该可以帮助您完成大部分工作。祝你好运

你的问题不是很清楚。你说的更有效率是什么意思?关于SO的问题通常应该非常具体,这似乎远不是一般性的。例如,我使用了两次相同的消息和相同的条件,我认为这不是最好的方法。有没有比这更好的循环方法?@sunflower这对如何进行代码审查更好?对不起,我还不熟悉这个网站。@sunflower,正如你所知,Compare的拼写类似于“Compare”,而不是“Compair”。)谢谢,我在CodeReview上发布了这个问题。所以最好是练习而不是使用compair字符串?你知道我在哪里可以读到关于最佳编程实践的书吗?我是说这是一个很好的有用的来源?@sunflower学习的最好方法是提问,尝试,当然还有寻找答案。例如,有关于整数与字符串比较的信息。继续工作,你就会不断学习!