我正在研究一个随机数猜测游戏作为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);
提前致谢。
答案 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中编译出来,但它应该可以帮助你完成大部分工作。祝你好运!