我正在进行基本的棋盘游戏,我遇到文件阅读问题。我试着像这样读取网格:
1 1 2 1 1 1
1 1 2 1 1 1
1 1 2 3 1 1
1 1 1 3 1 1
1 1 1 4 1 1
1 2 2 2 4 1
我的计划是在2D阵列中读取网格后将每个数字与不同的数字相关联(1将是墙,2将是路径等)。任何帮助将不胜感激。
注意读取:使用文件阅读器扫描文本文件,以便将网格放置在二维数组中
注意:我正在开发LibGDX游戏
答案 0 :(得分:0)
假设读入意味着将此字符串转换为数组数组。
var str = "1 1 2 1 1 1\n1 1 2 1 1 1\n1 1 2 3 1 1\n1 1 1 3 1 1\n1 1 1 4 1 1\n1 2 2 2 4 1";
var arr = str.split('\n').map(e => e.split(' ').map(Number));
/*
[
[1, 1, 2, 1, 1, 1],
[1, 1, 2, 1, 1, 1],
[1, 1, 2, 3, 1, 1],
[1, 1, 1, 3, 1, 1],
[1, 1, 1, 4, 1, 1],
[1, 2, 2, 2, 4, 1]
]
*/
发生了什么?
'\n'
' '
作为Andy points out,我在上面的功能中使用了ES6 箭头符号。
// ES6 arrow notation
(arg1, arg2) => expr
// can be written as legacy
function (arg1, arg2) { return expr;}
答案 1 :(得分:0)
Libgdx的FileHandle有一个帮助方法,可以轻松地将文本文件读入String。以下应适用于任意大小的非方形或锯齿状数组。假设您的文件位于assets目录中:
String fileString = Gdx.files.internal("myFile.txt").readString();
String[] lines = fileString.split("\n");
int[][] theArray = new int[lines.length][];
for (int i=0; i<lines.length; i++){
String[] elements = lines[i].split(" ");
theArray[i] = new String[elements.length];
for (int j=0; j<elements.length; j++)
theArray[i][j] = Integer.parseInt(elements[j]);
}