0

我正在用 C# 编写一个在 Windows 控制台中运行的 2d 回合制冒险游戏。这是我的游戏循环的大致概念:

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

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

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

4

1 回答 1

1
while (true)
{
    YourMethods();
    while (Console.KeyAvailable)
    {
        Console.ReadKey(true);
    }
    var key = Console.ReadKey();
    Console.WriteLine(key);
}
于 2018-09-23T02:23:41.217 回答