-1
public static int Menu() // 1 - Start Game , 2 - Quit Game
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Rock - Paper - Scissors");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("_______________________");
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("- Start Game");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("- Quit Game");
ConsoleKeyInfo keyInfo;
keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Enter)
{
Console.Clear();
return 1; // Start Game
}
else
{
if (keyInfo.Key == ConsoleKey.DownArrow)
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Rock - Paper - Scissors");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("_______________________");
Console.WriteLine();
Console.WriteLine("- Start Game");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("- Quit Game");
if (Console.ReadKey(true).Key == ConsoleKey.Enter)
{
Console.Clear();
return 2; // Quit Game
}
else
{
if (Console.ReadKey(true).Key == ConsoleKey.UpArrow)
{
Console.Clear();
return Menu(); // Recursion :)
}
}
}
}
return 2;
}
我的问题是,当它到达“退出游戏”,我按向上箭头其实我需要按2次向上箭头为它工作,而不是1控制台启动菜单
有什么建议?
除了答案公布,两件事情在这里 - 1.这是递归的每一个“游戏”将再添调用堆栈不好的地方,不必要地吃起来越来越多的内存更多游戏玩过。改为尝试一个循环。 2. else {if {}}'可以简化为else if {}。 –
+1从递归移动:)。在这种情况下,最好有一个变量存储一个专用于“退出”的密钥。 1.显示欢迎画面。 2.从用户那里读取一个密钥(并存储在一个变量中!)。 3.如果是退出键,提示/退出。否则,输入一个循环取决于** last **键是否是退出键。我可以充实更多,如果这将有助于 –