繁体   English   中英

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

[英]C# console random number guess game

我正在使用ac#控制台程序开发随机数猜游戏。 通过代码和工作即可完成。 但是,有一部分我想做得更好:我声明了我创建的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);

提前致谢。

“ 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之外编译,但可以帮助您达到目标。 祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM