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

时间:2018-09-23 02:05:23

标签: c# console user-input console.readkey

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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