我一直在尝试和浏览互联网,但我还没有弄清楚如何从文本文件中读取瓷砖地图。基本上我有一个名为的数组map
,但我想从文本文件加载地图,而不是在类中实现每个级别:/
我想的游戏是一个益智游戏,你是一个rpg角色,必须解决谜题才能进入新房间。
那么当我想添加一个新的地图/关卡时,我将如何做到这一点,我只需要编写一个新的 .txt 文件并将其添加到 Game1.cs 或类似的东西中?提前感谢:P
noamg97 的回答正确地描述了如何在 .NET 中读取和写入文本文件,但值得注意的是,有更简洁的方法来编写他的两个示例:
string[] mapData = File.ReadAllLines(path);
和
File.WriteAllLines(path, mapData);
假设每个字符代表地图上的一个图块,您可以mapData
使用简单的循环将上面的数组快速转换为更方便的格式,以便处理为您的本机数据格式:
var width = mapData[0].Length;
var height = mapData.Length;
var tileData = new char[width, height];
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
tileData[x, y] = mapData[y][x];
}
然后,您可以使用它通过简单的查找来确定特定图块的字符。
很容易,要从 .txt 文件中读取,您所要做的就是使用 System.IO 命名空间中的一些工具:
using (System.IO.Stream fileStream = System.IO.File.Open(Path_String, System.IO.FileMode.Open))
using (System.IO.StreamReader reader = new System.IO.StreamReader(fileStream))
{
string line = null;
while (true)
{
line = reader.ReadLine();
//Get Your Map Data
if (line == null)
break;
}
}
或者,要在 C# 中编写 .txt 文件,请使用以下代码:
System.IO.StreamWriter writer = new System.IO.StreamWriter(path + "/" + newShow.name + ".txt");
writer.Write(dataToRight);
writer.Close();
writer.Dispose();
编辑:附加信息 - 要将地图数据从文本文件获取到数组,您可以使用类似以下代码的内容(假设您确实按照https://stackoverflow.com/questions/中的指定存储地图数据18271747/xna-rpg-collision-and-camera)
List<int[]> temp = new List<int[]>();
List<int> subTemp = new List<int>();
...
string line = null;
while (true)
{
line = reader.ReadLine();
while (line.IndexOf(',') != -1)
{
subTemp.Add(line[0]);
line.Substring(1);
}
temp.Add(subTemp.ToArray());
if (line == null)
break;
}
int[][] mapData = temp.ToArray();