【问题标题】:Check every character in a .txt file检查 .txt 文件中的每个字符
【发布时间】:2013-10-22 01:16:13
【问题描述】:

我正在开发游戏引擎,但我在使用磁贴引擎时遇到了一些问题。

我希望它在一个文本文件中,我首先有 4 行告诉图块的大小和地图的大小,然后是地图/数组本身,例如:

32
32
10
10
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000

当文件被加载(使用流式阅读器)时,它会遍历文件并检查特殊字符 - 类似于:

switch(lineReader)
{
    case '#'
    {
        Solid solid = new Solid(Content.Load<Texture2D>("spr_Wall"), new Rectangle(0, 0, tileWidth, tile Height));
    }
}

我总共尝试了大约 2 到 3 个月的互联网搜索,但无论哪种方式,我都不擅长谷歌搜索,或者只是一个糟糕的程序员..

好吧,不管怎样,我怎样才能让这样的事情成为可能?

【问题讨论】:

  • 那么你的问题在哪里?
  • 什么是lineReader?是字符串吗?在这种情况下,您还应该在字符串的每个字符上运行一个嵌套循环。
  • 为什么不使用 XML 文本文件?您可以将对象反序列化为强类型类。例如,如果您有一个代表游戏设置的文件,您可以有一个 GameSettings 类并将其传递给 XmlSerializer 以读取和写入文件。然后它是人类可读的,也是机器可读的。
  • Felix.K - 我的问题是我不知道如何将这样的工作代码放在一起.. :/
  • 你也可以使用字典来实现不同的实体定义

标签: c# arrays streamreader


【解决方案1】:

如果文件格式正确(我的代码中没有错误检查)

private static void Main()
    {
        using (var reader = new StreamReader("filename"))
        {
            var tileSizeX = Convert.ToInt32(reader.ReadLine());
            var tileSizeY = Convert.ToInt32(reader.ReadLine());
            var mapSizeX = Convert.ToInt32(reader.ReadLine());
            var mapSizeY = Convert.ToInt32(reader.ReadLine());

            char[,] map = new char[mapSizeX, mapSizeY];

            for (var i = 0; i < mapSizeY; i++)
            {
                string line = reader.ReadLine();
                for (int j = 0; j < mapSizeX; j++)
                {
                    map[j, i] = line[j];
                }
            }

            for (int i = 0; i < mapSizeX; i++)
            {
                for (int j = 0; j < mapSizeY; j++)
                {
                    Console.Write(map[i, j]);
                }
                Console.WriteLine();
            }
        }
        Console.ReadLine();
    }

【讨论】:

  • 好的,所以我添加了这个,我添加了 4 行,每行都有一个值,即图块大小和地图大小。 (32 32 5 5),然后我添加了 5 行,每行 5 个零,当我运行程序时,它会生成一行零。我如何添加一个变量,我可以在我的开关中使用来检查符号???在此先感谢:)
  • 现在哪里有 Console.Write(map[i, j]);您可以在 switch 语句中使用 map[i, j] 以便您可以看到那里的字符
  • 这就是我几个月没有成功的原因..我不知道如何绘制或何时加载以及何时添加Draw方法.. D:有没有代码/ 有哪些可以帮助我的教程?
  • 是的,但我尝试使用 C# 来减少工作以查看是否有效。我猜这是个坏主意:/
  • 我觉得这个教程很好:link
猜你喜欢
  • 2016-08-28
  • 2018-10-16
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 2020-03-10
相关资源
最近更新 更多