2014-03-01 145 views
1

我正在做一个随机数猜测游戏作为一个C#控制台程序。它完成了代码和工作。但是,有一部分我想做得更好: 我宣布了一个Guess类的实例,现在如何使这部分更高效?C#控制台随机数猜游戏

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); 

在此先感谢。

+0

你的问题不是很清楚。你更高效的意思是什么?关于SO的问题通常应该非常具体,这似乎很一般。 –

+0

例如我使用相同的条件两次相同的消息,我认为这不是最好的方法。任何方式来循环更好? – sunflower

+1

@sunflower这将是更好的[代码评论](http://codereview.stackexchange.com) – 2014-03-01 23:52:57

回答

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中编译出来,但它应该能让你获得大部分的方法。祝你好运!

+0

谢谢,我以CodeReview的方式发布了任何问题。 – sunflower

+0

所以最好不要compair字符串?你知道我在哪里可以阅读关于最佳编程习惯吗?我的意思是一个好的有用的来源? – sunflower

+0

@sunflower最好的学习方法是提问,尝试 - 当然是寻找答案。 [这个问题](http://stackoverflow.com/questions/1642659/is-it-more-efficient-to-compare-ints-and-ints-or-strings-and-strings)例如,有整数信息与字符串比较。继续工作,你会继续学习! –