2015-04-05 17 views
0

我需要檢查哪個鍵被按下,如果它是LeftArrow做某事,如果它是RightArrow做別的事情,但是當沒有按鍵被按下時,主要的cycslus必須繼續。c#ConsoleApp KeyPressed檢查

我有這個代碼,但當這個過程來到這個部分它只是等待按鍵,它不會跳過它,當沒有按鍵被按下。其次porblem是,我需要通過1改變「+」位置字段中,老兄,如果我離開了鍵按下久其舉動XXX

if (Console.ReadKey(true).Key == ConsoleKey.LeftArrow) 
      { 

       int levo; 
       levo = pozice; 
       if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole 
       { 
        levo = levo + 1; 
       } 
       p18[levo - 1] = "*+*"; //Samotný posun panáčka 
       p18[levo] = " "; //Smazání panáčka z původní pozice 

      } 


      if (Console.ReadKey(true).Key == ConsoleKey.RightArrow) 
       { 

         int pravo; 
         pravo = pozice; 
         if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole 
         { 
          pravo = pravo - 1; 
         } 
         p18[pravo + 1] = "*+*"; //Samotný posun panáčka 
         p18[pravo] = " "; //Smazání panáčka z původní pozice 

       } 
+0

把'if(Console.KeyAvailable){}'圍繞這個。 – 2015-04-05 14:40:54

回答

0

你應該只讀從控制檯的關鍵每個循環執行一次,然後將操作基於讀取的值。在編寫代碼時,您正在每個if語句中讀取新密鑰。下面是你的代碼的修改版本,這樣做。

 var key = Console.ReadKey(true).Key; 

     if (key == ConsoleKey.LeftArrow) 
     { 
      int levo = pozice; 
      if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole 
      { 
       levo = levo + 1; 
      } 
      p18[levo - 1] = "*+*"; //Samotný posun panáčka 
      p18[levo] = " "; //Smazání panáčka z původní pozice 

     } 


     if (key == ConsoleKey.RightArrow) 
     { 
      int pravo = pozice; 
      if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole 
      { 
       pravo = pravo - 1; 
      } 
      p18[pravo + 1] = "*+*"; //Samotný posun panáčka 
      p18[pravo] = " "; //Smazání panáčka z původní pozice 
     }