2017-11-01 12 views
-3

キーが押されているかどうかを検出したいのですが、if文がトリガーされていないことを伝える限り、プログラムはEnviroment.Exit(0)のためシャットダウンします。 Console.WriteLine("working")が実行されているのでConsole.KeyAvailableがトリガーされていません

public static int GameLoop() 
     { 
      while(true) 
      { 
       if(Console.KeyAvailable == true) 
       { 
        Environment.Exit(0); //test to see if being used 
        Player.KeyPressed = Console.ReadKey().KeyChar; 
        Player.Movement(); 
       } 
       Console.Clear(); 
       Console.SetCursorPosition(playerX, playerY); 
       Console.Write(playerDirection); 

       input = (char)Console.ReadKey().KeyChar; 

GameLoop()が呼び出されています。 Console.KeyAvailable == trueがキープレスで満たされていない理由は?ありがとう!ダニのカップル(非常に短い時間)にキーがinput = (char)Console.ReadKey().KeyChar;それが利用できなくなって読まれているので、

Console.KeyAvailable MSDN

+1

作品中での簡単なコンソールアプリケーションは、真console.keyavailable終了した場合..完全に動作します – BugFinder

+0

あなたのゲームはコンソールゲームですか? – BugFinder

+0

実際にコンソールアプリケーションであれば動作するはずです。 –

答えて

1

コードif(Console.KeyAvailable == true)は真であることが判明されることはありません。 @Hansアンパッサンは、基本的にConsole.KeyAvailableConsole.ReadKeyと同様の方法またはループにすべきではない「あなたはReadKey()KeyAvailableコールの間にキーを押すために十分迅速にすることができオッズは非常に小さいです」

を言っ

として、 。

あなたはキーが押された後、そのようなあなたのif文の中からキーを読み込むものを記録したいのであれば..私のため

  if (Console.KeyAvailable == true) 
      { 
       Player.KeyPressed = Console.ReadKey().KeyChar; 
       Player.Movement(); 
      } 
関連する問題