2017-03-09 14 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)'は無限ループです。 「真実」は決して「真実」ではないからです。ここでは正確に何をしようとしていますか? – 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) 
} 
関連する問題