Я пытался выполнить задание для своего класса игрового дизайна в C #, одна из проблем, с которыми я столкнулся, заключается в том, что я не могу загрузить свой текстовый файл Save1.GAME со всей информацией о загрузке, я получаю «Систему». .FormatException: 'Входная строка была не в правильном формате.' 'Ошибка.
На данный момент это назначение включает в себя небольшую панель, где вы, игрок, проектируете Сокобан (https://en.wikipedia.org/wiki/Sokoban) карта,Я уже выполнил эту часть, и теперь я должен загрузить этот файл сохранения в свою программу, а затем сгенерировать «плитки» (плитки просто представляют собой маленькие квадраты, где находятся элементы) на другой панели, где будет фактически выполняться игра.
До сих пор я пытался загрузить файл и записать его в строковый массив строка за строкой. Я также пытался записать весь файл в строку и использовать функцию .split (','),безрезультатно. Я попробовал довольно много идей, которые, если честно, я забыл каждую из них.
Моя кнопка загрузки в форме, в которую будет играть игра:
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openLevelDialog = new OpenFileDialog();
openLevelDialog.Title = "Select level to load";
if (openLevelDialog.ShowDialog() == DialogResult.OK)
{
string MyString = System.IO.File.ReadAllText(openLevelDialog.FileName);
int i = 0;
int j = 0;
//My array where I will just dump the whole file into.
int[,] result = new int[10, 10];
//foreach loop where I attempt to go line-by-line and split the individual numbers by ','
foreach (var row in MyString.Split('\n'))
{
j = 0;
foreach (var col in row.Trim().Split(','))
{
result[i, j] = int.Parse(col.Trim()); //Exception happens here.
j++;
}
i++;
}
//Just an attempt to display what the variable values in my form, ignore this part.
for (int a = 0; a < result.GetLength(0); a++)
{
for (int w = 0; w < result.GetLength(1); w++)
{
label1.Text += result[a,w].ToString();
}
}
}
}
А это файл Game1.GAME
2,2 <--- Это размер карты, 2X2 = всего 4 плитки. --- </p>
0,0,0 <--- Это плитка [0,0], и, согласно моему перечислению TileTypes внутри моего класса tile.cs, она должна быть пустой, следовательно, третий 0. -- </p>
0,1,1 <--- Это плитка [0,1], и согласно моему перечислению TileTypes внутри моего класса tile.cs это должно быть "Герой", следовательно, 1. -- </p>
1,0,2 <--- Это плитка [1,0], и согласно моему перечислению TileTypes внутри моего класса tile.cs это должна быть стена, следовательно, 2. --- </p>
1,1,3 <--- Это плитка [1,1], и согласно моему перечислению TileTypes внутри моего класса tile.cs это должно быть поле, следовательно, 3. --- </p>
примечание: есть 4-е перечисление со значением "Пункт назначения", но на этой конкретной карте я просто не добавил ничего.
Как это обычно выглядит
2,2
0,0,0
0,1,1
1,0,2
1,1,3
Я надеялся, что он просто загрузит строку, разделит ее на массив int, но, похоже, я не смог преодолеть исключение независимо от того, что я делаю.
Спасибо за вас 'время заранее.
Вот мой файл изнутри заметкиpad ++
My System.IO return