程序仍在运行时的用户输入

我正在打一场乒乓球比赛。 我让一切正常,但用户移动了桨。 我正在使用while(true)循环,其中调用所有方法。 如何用WASD移动球拍? 我希望程序在等待用户输入时继续运行。 我尝试使用Console.ReadKey()但它冻结了程序

虽然我建议使用游戏库(虽然我找不到任何专门用于终端的Curses Sharp可能有用),但这可以手动完成。

核心问题是Console.ReadKey 阻塞 (或“冻结”)直到一个键可用于读取; 使用Console.KeyAvailable查看当前是否有可用的密钥:

 while (true) { // Clear out all keys in the queue; there may be multiple (hence "while") while (Console.KeyAvailable) { // Won't block because there is a key available to read. Handle it. var key = Console.ReadKey(true); HandleKey(key); } // Do other processing .. ProcessGameTick(); // .. and be sure to Yield/Sleep to prevent 100% CPU usage. Thread.Sleep(0); }