今日の初めに、古いポケモンゲームで見られるような2Dマップを生成できるように、画像を全体像の一部として順番に配置する方法について質問しました。すべてがタイルベースです。
マップ自体を生成するところまで来ましたが、少しおかしいです。
HashMapにタイルオブジェクトを入力するまでの問題を追跡しました。タイルオブジェクトは、名前とBufferedImageを保持します。問題のように思われるのは、プログラムがタイルで満たされたフォルダーからファイル(pngファイル)を読み取り、それらをHashMapに配置する方法です。
タイルオブジェクトをHashMapに配置するときのコードは次のとおりです。
private static HashMap<Integer, Tile> getTiles(String path) throws IOException {
HashMap<Integer, Tile> temp = new HashMap<>();
File folder = new File(path);
Tile tile;
int counter = 0;
for(File file : folder.listFiles()) {
if(file.isFile()) {
try {
if(file.getCanonicalPath().endsWith(".png")) {
tile = new Tile(file.getName(),ImageIO.read(file));
temp.put(counter, tile);
counter++;
}
} catch(IOException ioe) {
System.out.println("Picture number " + counter + " could "
+ "not be saved in the hashmap: \n"
+ ioe.getMessage());
continue;
}
}
}
return temp;
}
そして、HashMapでtoString()を実行したときの出力は次のとおりです。
Tiles: (0,0.png)(1,1.png)(2,10.png)(3,100.png)....
tile 1.pngの後、10、100、101、102の順にカウントを開始します。次に、112に達すると、次のようにカウントを開始します。
(112,2.png)(113,20.png)(114,200.png)(115,201.png)...
このフォルダには合計220個のタイルがあります(タイル0.pngを数えます)。問題が何であるかははっきりとわかりますが、どのように修正するかはわかりません。