2D 遊戲(如坦克大戰、泡泡堂)地圖通常用二維數組硬編碼。地圖多時,代碼膨脹、維護困難、可讀性差。
0=空地、1=牆、a=玩家),直觀可編輯FileInputStream),效率高於對象流public int[][] createMap(String mapName) {
File file = new File(mapName);
int[][] map = null;
ArrayList<Byte> list = new ArrayList<>();
if (file.exists()) {
try (InputStream in = new FileInputStream(file)) {
byte[] content = new byte[in.available()];
in.read(content);
// 載入列表
for (byte b : content) list.add(b);
// 移除換行符:Windows \r\n (13,10) 或 Unix \n (10)
list.removeIf(b -> b == 10 || b == 13);
// 按行分割構建二維數組
String text = new String(content);
String[] lines = text.split("\r\n");
map = new int[lines.length][lines[0].length()];
int idx = 0;
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
map[i][j] = list.get(idx++) - 48; // '0'=48 轉數字
}
}
} catch (Exception e) { e.printStackTrace(); }
}
return map;
}
split("\r\n") 兼容 Windows 換行,Unix 下需調整為 \n