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

时间:2014-03-01 23:45:09

标签: 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!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);

提前致谢。

1 个答案:

答案 0 :(得分:1)

“Compair()”功能是什么样的?对于更简单的函数,似乎可以返回整数而不是字符串。一个例子如下:

// just an example implementation
public int Compair() {
   if (UserGuess < actualValue) return -1;
   if (UserGuess > actualValue) return 1;
   return 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);

应该这样做!这应该更快,因为它没有使用字符串比较,它可能更容易阅读,它应该修复了一些逻辑问题。

注意 - 我对属性的使用做了一些假设,所以这个例子可能无法从get中编译出来,但它应该可以帮助你完成大部分工作。祝你好运!