0

我正在开发一个小游戏,我在从 .txt 文件中读取关卡地图,将其转换为 2D 字符数组,然后将任何非空白字符转换为一种类型的对象时遇到问题或其他。我认为转换为二维数组很好,但看起来在转换为对象时遍历数组的两个 for 循环之一中存在空引用异常。这是代码:

public void buildLevel()
{
    List<Tangible> objects = new List<Tangible>(0);
    for (int i = 0; i < map.GetLength(1); i++)
    {
        for (int j = 0; j < map.GetLength(0); j++)
        {
            if (map[j, i] == 'O')
            {
                objects.Add(new Ball((50 * j), (50 * i)));
            }
            if (map[j, i] == 'X')
            {
                objects.Add(new Block((50 * j), (50 * i), 50, 50));
            }
        }
    } 
    allObjects = objects;
}

知道这里可能会发生什么吗?对此,我真的非常感激。

编辑:这是将文件读入二维数组的代码:

public void setMap(String mapFile)
    {
        try
        {
            List<String> lines = new List<String>();
            using (StreamReader sr = new StreamReader("maps\\testLevel.txt"))
            {
                String currentLine;
                while ((currentLine = sr.ReadLine()) != null)
                {
                    lines.Add(currentLine);
                }
            }
            map = new char[lines[0].Length, lines.Count];
            for (int i = 0; i < lines.Count; i++)
            {
                for (int j = 0; j < lines[0].Length; j++)
                {
                    map[j, i] = lines[i][j];
                }
            }
        }
        catch (DirectoryNotFoundException e)
        {
            Console.Error.WriteLine(e);
        }
    }
4

0 回答 0