私は現在、さまざまなゲームボードを含む多くのファイルが与えられているプロジェクトに取り組んでいます。ボードはすべて正方形(高さと幅が同じ)ですが、サイズが異なります。小さな例では、(15回15)ここで見ることができます:(チェス盤のように)グリッドにファイルを読み込むC#
.-------------.
|xx x xxxxxx |
| xx xxx x|
| xxx xxxx |
| xx xxx x|
| xxxx x x x |
|xx xxx x xx|
| xx @ x xx|
| x x xx x|
| x x xx |
| xxx xx xxx |
| xx xx x|
| xxxxxx xxx |
|xx x x x|
'-------------'
私は、これらのファイルは、2次元配列に取得したいので、私は、ゲームボードとしてそれらを使用することができます。
しかし、私は読んで、2次元配列にファイルを変換する助けが必要です。これまでのところ私は(マクシミリアンゲルハルト溶液からインスピレーションを)持っている:
class Program
{
enum FieldElement
{
Free, Mine, Piece, Boarder
}
static void Main(string[] args)
{
public FieldElement[,] Field {get; set;}
public static Program ParseBoard(string board)
{
using (StreamReader sr = new StreamReader(@"C...test.txt"))
{
// Finds number of lines in the example
var lineCount = File.ReadAllLines(@"C...test.txt").Length;
Console.WriteLine(lineCount);
string lines = sr.ReadLine();
var field = new FieldElement[lineCount-1, lineCount-1];
for (int y = 0; y < lineCount-1; y++)
{
for (int x = 0; x < lineCount; x++)
{
switch (lines[y][x])
{
case 'X':
field[x, y] = FieldElement.Mine;
break;
case '|':
case '-':
case '\'':
field[x, y] = FieldElement.Boarder;
break;
case ' ':
field[x, y] = FieldElement.Free;
break;
case '@':
field[x, y] = FieldElement.Piece;
break;
default:
Console.WriteLine("Unrecognized character {lines[y][x]} in line {y} at position {x}");
break;
}
}
}
return new Board() { Field = field };
}
}
}
}
}
をそう総括する:私は2次元配列に、テキストファイルから取得いくつかの助けをしたいと思います。
このファイルには、表示されているとおりの内容が含まれていますか?かなり簡単です。あなたが持っている線の数を調べ、線の長さなどを分析します。実際に何を読み込むかを決めます(つまり、どのような "グリッド"が必要ですか?DataTable?2D配列ですか?)。それからそれを試して、より具体的な質問に戻ってください。 –
これはあまりにも幅広く、何の努力もしていません。 – tnw
デバッガでこのコードを実行し、間違っていることを確認します。 –