1

卓球ゲームを作っています。私はすべてを機能させましたが、ユーザーはパドルを動かしました。すべてのメソッドが呼び出される while (true) ループを使用しています。WASD でパドルを動かすにはどうすればよいですか? ユーザーの入力を待っている間、プログラムを続行したい。Console.ReadKey() を使用してみましたが、プログラムがフリーズします

4

1 に答える 1

1

ゲームライブラリを使用することをお勧めしますが (端末専用のものは見つかりませんが、役に立つかもしれない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);
}
于 2013-06-23T04:43:13.627 に答える