1

ファイルのテキストファイル(ここに例があります)を読み込むmapLoaderを作成しようとしています

[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]

すべての行を String[15] にロードするので、各ブラケットは残りの部分から分離されます

私はゲームを作成しています。これは 2D RPG です (オリジナルですよね?)。上記の数字は、タイル イメージを配置する場所と、「mapTile BufferedImage[]」で使用するタイル イメージを示す重要な整数です。

括弧内の各数字は、X 軸上の 1 単位を表します。

ブラケットの各コレクションは、Y 軸上で 1 つのユニットを構成します。

私のグリッドサイズは24x15です

私の問題は、数値を取得して int[24][15] に入れようとしていることですが、ご覧のとおり、文字列の長さはさまざまです。コンマの間に使用できる「数字」の最大量は「4」です。これは、9999 個を超える mapTiles がないためです笑

その情報を抽出する正規表現を作成するにはどうすればよいですか?

4

1 に答える 1

3

データ セットが単純すぎて、正規表現を使用できません。行をコンマで簡単に分割して,、座標を解析できます。また、int[15][24]グリッドint[24][15]が.int[rows][cols]24x15

int[][] coords = new int[15][24];
BufferedReader br = new BufferedReader(new FileReader("/path/to/file"));

int row = 0;
String line = null;
while ((line = br.readLine()) != null) {
    // remove "[ ]" then split by ","
    String[] x = line.substring(1, line.length() - 1).split(",");
    // parse first 24 values only
    int cols = Math.min(x.length, 24);
    for (int col = 0; col < cols; col++) {
        coords[row][col] = Integer.parseInt(x[col]);
    }
    if (++row >= 15) break; // parse first 15 lines only
}

for (int i = 0; i < coords.length; i++) {
    for (int j = 0; j < coords[i].length; j++) {
        System.out.print(coords[i][j]);
    }
    System.out.println();
}

出力:

53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
3333333333333333332133333
于 2013-09-10T04:44:02.720 に答える