某些行没有触发

时间:2016-06-28 18:06:47

标签: c#

我正在制作基于3D文字的游戏。当我启动程序时,它执行“命中x退出”行,但它不会在方法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();
            }
        }
}

1 个答案:

答案 0 :(得分:1)

该行:

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

会导致循环永不运行。第二个元素x==1是正在检查的条件,它是假的,因为初始化器将x设置为零。

查看for循环的一些文档以便更好地理解。