控制台在代码运行时读取用户输入



我正在用 C# 编写一个在 Windows 控制台中运行的 2D 回合制冒险游戏。 以下是我的游戏循环的粗略想法:

while(condition) {
MethodCall1();
MethodCall2();
MethodCall3();
GetPlayerInput(Console.ReadKey());         
}

游戏在 while 循环中运行,循环的末尾是 Console.ReadKey((。这个想法是让游戏打印出所有相关信息,运行敌人的AI和其他计算,然后等待用户输入,然后再重新做一遍。 但是,我遇到了一个问题。运行所有代码需要相当长的时间(将地图打印到控制台是罪魁祸首,使用颜色打印大约需要 150 毫秒(,在此期间控制台仍在读取用户输入,即使它似乎应该等待读取输入,直到所有代码和打印完成。如果按住任何键,即使我释放键,它也会循环遍历代码进行检测到的键数。

所以我想我有两个问题:为什么控制台在仍在执行代码的情况下读取输入,以及阻止这种情况发生的好方法是什么?

while (true)
{
YourMethods();
while (Console.KeyAvailable)
{
Console.ReadKey(true);
}
var key = Console.ReadKey();
Console.WriteLine(key);
}

最新更新