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

本文关键字:用户 输入 运行时 程序 | 更新日期: 2023-09-27 18:19:28

我正在做一个乒乓球游戏。除了用户移动球拍之外,我什么都做了。我使用的是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);
}