2016-06-28 11 views
0

私は3Dテキストベースのゲームを作っています。私がプログラムを起動すると、 "hit x to exit"という行が実行されますが、Gameのメソッドでは他のコード行は実行されません。これはプログラム全体です。あなたが何が間違っているかを知ることができれば、それは役に立つでしょう。特定の行がトリガーされていません

using System; 
namespace ThreeDGame { 
    class Player { 
     private int px=1; 
     public int Px { 
      get {return px;} 
      set {px = value;} 
     } 
     private int py=1; 
     public int Py { 
      get {return py;} 
      set {py = value;} 
     } 
     private int pz=1; 
     public int Pz { 
      get {return pz;} 
      set {pz = value;} 
     } 
     public Player(int x, int y, int z) { 
      px=x; 
      py=y; 
      pz=z; 
     } 
     public void xp() { 
      px++; 
      if (px==10) { 
       px=1; 
      } 
     } 
     public void xn() { 
      px--; 
      if (px==0) { 
       px=9; 
      } 
     } 
     public void yp() { 
      py++; 
      if (py==10) { 
       py=1; 
      } 
     } 
     public void yn() { 
      py--; 
      if (py==0) { 
       py=9; 
      } 
     } 
     public void zp() { 
      pz++; 
      if (pz==10) { 
       pz=1; 
      } 
     } 
     public void zn() { 
      pz--; 
      if (pz==0) { 
       pz=9; 
      } 
     } 
    } 
    class Board { 
     public char[,,] board = new char[9,9,9]; 
     Player o = new Player(1,1,1); 
     public Board() { 
      for (int x=0;x<board.GetLength(0);++x) { 
       for (int y=0;y<board.GetLength(1);++y) { 
        for (int z=0;z<board.GetLength(2);++z) { 
         board[x,y,z] = '~'; 
        } 
       } 
      } 
     } 
     public void DispBoard(int z) { 
      for (int a=0;a<board.GetLength(0);a++) { 
       Console.WriteLine(); 
       for (int b=0;b<board.GetLength(1);b++) { 
        Console.Write(board[a,b,z]); 
       } 
      } 
     } 
     public void Move(char dir) { 
      switch (dir) { 
       case 'w':{ 
        o.yn(); 
        break; 
       } 
       case 's':{ 
        o.yp(); 
        break; 
       } 
       case 'a':{ 
        o.xn(); 
        break; 
       } 
       case 'd':{ 
        o.xp(); 
        break; 
       } 
       case 'q':{ 
        o.zn(); 
        break; 
       } 
       case 'e':{ 
        o.zp(); 
        break; 
       } 
      } 
     } 
     public void PlayerPosOnBoard() { 
      board[o.Px,o.Py,o.Pz] = '@'; 
     } 
     public void Game() { 
      Console.Write("Hit x to exit"); 
      for (int x=0;x==1;x=x) { 
       char c = Console.ReadKey().KeyChar; 
       switch (c) { 
        case 'x':{ 
         x=1; 
         break; 
        } 
        default:{ 
         Move(c); 
         DispBoard(o.Pz); 
         break; 
        } 
       } 
      } 
     } 
    } 
    class Game { 
       static void Main() { 
       Board b = new Board(); 
       b.Game(); 
      } 
     } 
} 
+5

このループには何が期待されますか?その理由は何ですか? 'for(int x = 0; x == 1; x = x)' whileループのほうがはるかに適しているようです。 – tnw

+0

あなたは 'x!= 1'を意味すると思います。 – juharr

+1

デバッガを使用する方法を学ぶ時間。 – LarsTech

答えて

1

ライン:

for (int x=0;x==1;x=x) 

は、ループが実行されないことになります。 2番目の要素x==1はチェックされている条件であり、イニシャライザはxを0に設定するためfalseです。

forループのいくつかのドキュメントをよく見てください。

関連する問題