我是C#的新手,在开始学习更多技术之前,已经开始在控制台中创建一个基于文本的小游戏。在我的开始菜单上,我正在寻找一个简单的浮华'Press Enter to continue'
,它会不断循环打开和关闭,直到用户按下Enter键为止。
while (!enter)
{
WhiteText();
Console.SetCursorPosition(47, 15);
Console.WriteLine("[Press 'Enter' to start game]");
System.Threading.Thread.Sleep(2000);
BlackText();
Console.SetCursorPosition(47, 15);
Console.WriteLine("[Press 'Enter' to start game]");
System.Threading.Thread.Sleep(1000);
}
基本上,我希望在检查用户是否实际按Enter时重复该操作。我在ConsoleKeyInfo input = Console.ReadKey();
中使用了if语句,然后检查它们是否按了回车键。我的问题是我似乎无法让两者同时运行。在控制台中甚至可以做到这一点。
我真的希望我能以我有限的知识弄清楚这一点,对此将提供任何帮助或见解。
答案 0 :(得分:0)
可以在读取密钥之前使用Console.KeyAvailable。 但是,当用户按下Enter键时,仅在Thread.Sleep结束之后才处理输入。因此对用户来说会很慢
bool show = true;
while (true)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
}
Console.ForegroundColor = show ? ConsoleColor.White : ConsoleColor.Black;
Console.SetCursorPosition(47, 15);
Console.WriteLine("[Press 'Enter' to start game]");
System.Threading.Thread.Sleep(show ? 2000 : 1000);
show = !show;
}