C# 如果下一个位置是特定对象,如何在二维数组中进行检查?

C# 如果下一个位置是特定对象,如何在二维数组中进行检查?,c#,arrays,c#-4.0,maze,C#,Arrays,C# 4.0,Maze,我正在2d阵列中创建一个迷宫游戏,但我不知道如何使墙/门/等工作。我在想,当我按下“W”时,只有当下一个位置不是墙时,它才会改变角色的位置。我怎么检查? 以下是我的地图和运动代码: const int ROWS = 16, COLUMNS = 24; Blocks[,] map = new Blocks[COLUMNS, ROWS]; int playerRow = 3, playerColumn = 11; Character gubbe = n

我正在2d阵列中创建一个迷宫游戏,但我不知道如何使墙/门/等工作。我在想,当我按下“W”时,只有当下一个位置不是墙时,它才会改变角色的位置。我怎么检查? 以下是我的地图和运动代码:

const int ROWS = 16, COLUMNS = 24;
        Blocks[,] map = new Blocks[COLUMNS, ROWS];
        int playerRow = 3, playerColumn = 11;
        Character gubbe = new Character();


        // Create map
        for (int row = 0; row < ROWS; row++)
        {
            for (int column = 0; column < COLUMNS; column++)
            {

                if (row == 0 || row == ROWS - 1 || column == 0 || column == COLUMNS - 1)
                    map[column, row] = new Wall();

                else
                    map[column, row] = new EmptySpace();

            }
        }

        while (true)  // TODO: add a goal that ends the loop
        {
            // Draw map
            string buffer = "";
            for (int row = 0; row < ROWS; row++)
            {
                string line = "";
                for (int column = 0; column < COLUMNS; column++)
                {
                    if (column == playerColumn && row == playerRow)
                        line += gubbe.printBlock();

                    else
                        line += map[column, row].printBlock();
                }
                //Console.WriteLine(line);
                buffer += line + "\n";
            }
            Console.CursorLeft = 0;
            Console.CursorTop = 0;
            Console.Write(buffer);

            var key = Console.ReadKey();
            if (key.Key == ConsoleKey.W)
                playerRow--;
            else if (key.Key == ConsoleKey.A)
                playerColumn--;
            else if (key.Key == ConsoleKey.S)
                playerRow++;
            else if (key.Key == ConsoleKey.D)
                playerColumn++;
        }//while
    }//Map
const int行=16,列=24;
块[,]映射=新块[列,行];
int playerRow=3,playerColumn=11;
Character gubbe=新字符();
//创建地图
对于(int row=0;row
您可以通过两种不同的方式检查类型:

第一种选择:

if (map[column, row] is Wall)
{
    // Do something
}
第二种选择:

if (map[column, row].GetType() == typeof(Wall))
{
    // Do something
}

您可以通过两种不同的方式检查类型:

第一种选择:

if (map[column, row] is Wall)
{
    // Do something
}
第二种选择:

if (map[column, row].GetType() == typeof(Wall))
{
    // Do something
}

@Alex的回答正确,因为你需要在运行时检查下一个街区的类型,然后根据需要采取行动。我稍后想在地图上添加带门的房间。那么,当地图不仅仅是一个空矩形时,我该如何实现这一点呢?这听起来像是一个不同的问题。。。。我很抱歉,我无法告诉你如何编写游戏。正确答案是@Alex,因为你需要在运行时检查下一个区块的类型,然后采取行动。我稍后想在地图上添加带门的房间。那么,当地图不仅仅是一个空矩形时,我该如何实现这一点呢?这听起来像是一个不同的问题。。。。很抱歉,我不能告诉你怎么写这个游戏。