2017-03-09 108 views
-7

一天中的各種時刻!問題在於循環:用最後2行編寫的代碼被定義爲不可訪問的代碼,因爲當你按任意鍵的情況下啓動一個無限循環。編程經驗很少,不理解。如何擺脫這個循環?這裏的程序代碼:如何擺脫這個循環?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Drawing; 
namespace ConsoleApplication3 
    { 
    class Hero 
    { 
     public int x = 0; 
     public int y = 0; 
     public int hp = 3; 
     public double power = 3; 
     public void printHero() 
     { 
      Console.WriteLine(" x={0},y={1},hp={2},power={3}", x, y, hp, power); 
     } 
     public void hitHero() 
     { 
      hp = hp - 1; 
     } 
     public void attackHero() 
     { 
      power = power - 0.5; 
     } 
     static void Main(string[] args) 
     { 
      Hero hero; 
      hero = new Hero(); 
      ConsoleKeyInfo keypress; 
      keypress = Console.ReadKey(); 
      while (true) 
      { 
       switch (keypress.KeyChar) 
       { 
        case 'A': 
         hero.x = hero.x - 1; 
         hero.printHero(); 
         break; 
        case 'D': 
         hero.x = hero.x +1; 
         hero.printHero(); 
         break; 
        case 'W': 
         hero.y = hero.y + 1; 
         hero.printHero(); 
         break; 
        case 'S': 
         hero.y = hero.y - 1; 
         hero.printHero(); 
         break; 
        case 'E': 
         hero.attackHero(); 
         hero.printHero(); 
         break; 
        case 'X': 
         hero.hitHero(); 
         hero.printHero(); 
         break; 
        default: 
         break; 
       } 
      } 
      Console.ReadLine(); 
      return; 
     } 
    } 
} 
+1

'while(true)'是一個無限循環。因爲'true'永遠不會*成爲'true'。你究竟想在這裏做什麼? – David

+0

*「如何擺脫這個循環」*好吧,你如何*想擺脫這個循環?它是在什麼時候執行任何列出的動作,是在沒有選擇任何動作時,或者是否按下了某個特定的按鍵,還是取決於窗外的太陽? – grek40

回答

0

那麼,總是有break命令。您可以在按下按鍵後標記該按鍵,您想要打破該按鍵。然後在switch以外,你break。但是,爲什麼你需要有一個while(true)循環呢?

1

你要查詢的關鍵循環:

while (true) 
{ 
    keypress = Console.ReadKey(); // continuously check for key presses 
    switch (keypress.KeyChar) // process new keypresses 
    { 
     case 'A': 
... 

,不要忘記打破循環在某些時候(例如,當滿足某些條件或某些鍵被按下):

... 

    if(endCondition) 
     break; // will exit while(true) 
}