我想在迷宫中制作迷你游戏。 我需要先创建这样的东西 https://i.stack.imgur.com/X3SZS.jpg 我的问题是,如何在没有定义每个单一[] []位置的情况下像游戏地图那样填充数组
`char s = '#';
char [][] ary = new char [5][5];x
ary[0][0] = s;
ary[0][1] = s;
ary[0][2] = s;
ary[0][4] = s;
ary[1][0] = s;
ary[1][1] = s;
ary[1][4] = s;
ary[2][0] = s;
ary[2][1] = s;
ary[2][3] = s;
ary[2][4] = s;
ary [3][0] = s;
ary [3][3] = s;
ary [3][4] = s;
ary [4][2] = s;
ary [4][3] = s;
ary [4][4] = s;
我想让它变得更简单
char [][] ary {{#, #, #, , #};
{#, #, , , #};
依旧......
有可能吗? 谢谢你的时间。
答案 0 :(得分:0)
地图数据应该存储为数据,而不是代码,在这种情况下可能是文本文件,可能看起来像:
# # # # # # #
# # # #
# # #
# # #
# # # # # # #
然后,您应该拥有读入文本文件并使用其信息填充地图数组的代码。我将使用一个用文本文件初始化的Scanner对象,然后使用每个文本行初始化的独立Scanner读取每一行,并在嵌套for循环中填充我的数组。
通过将迷宫置于数据域中,您可以大大提高程序的灵活性,现在可以在不更改代码的情况下更改地图 。
如果您确切知道文本文件的内容,包括每行的行数和数字标记,这样的事情就可以了......
public static char[][] readMap(String filePath) throws FileNotFoundException {
char[][] map = new char[MAP_ROWS][MAP_COLUMNS];
File mapFile = new File(filePath);
Scanner mapScanner = new Scanner(mapFile);
for (int row = 0; row < map.length; row++) {
String line = mapScanner.nextLine();
Scanner lineScanner = new Scanner(line);
for (int col = 0; col < map[row].length; col++) {
map[row][col] = lineScanner.next().charAt(0);
}
lineScanner.close();
}
if (mapScanner != null) {
mapScanner.close();
}
return map;
}
否则,请在阅读之前考虑使用嵌套的ArrayLists并检查Scanner令牌的可用性。