数か月前にプログラミングを学び始めたばかりで、コンソールのスネーク ゲームをやろうと決心しました。1つのことを期待して、すべてがうまく機能します。
ヘビが上向きになり、下矢印を押したままにすると、ボタンを押すのをやめた後も、ヘビは停止し、しばらく停止したままになります。
ヘビが右に進んでいるときに右矢印を長押しすると、しばらくコントロールが失われます (ただし、ヘビは止まりません)。すべての方向(左、右、上、下)で発生します。
cki を別の ConsoleKeyInfo と比較しようとしましたが、その間にわずかな遅延がありましたが、問題ありません。キーを押し続けると、プログラムはその場所にとどまり、キーを更新します。(少なくともそれが問題だと思います)
これは Console.ReadKey の「機能」ですか、それともこれを回避する方法はありますか?
まだ始めたばかりなので、詳しいことはわかりませんのでご了承ください。
キーを 1 秒以上押し続けない限り、すべてが問題なく動作します。
public void LiikutaMato() //movesnake
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo cki;
cki = Console.ReadKey(true); // <-- I believe this is where it gets stuck
}