私はパズル ゲームを作成しており、8 個のピースを 3x3 グリッドにランダムに配置していますが、すべての画像が HashMap に追加されているわけではありません。誰かが理由を見ますか?
パズルを整理するために使用するコードは次のとおりです。
private HashMap<BufferedImage, Point> puzzle = new HashMap<>();
public void arrangePieces() {
Random random = new Random();
List<BufferedImage> rImages = new ArrayList<>();
rImages.addAll(Arrays.asList(
Assets.a2, Assets.a3,
Assets.a4, Assets.a5, Assets.a6,
Assets.a7, Assets.a8, Assets.a9
));
for(int y = 1; y <= 3; y++) {
for(int x = 1; x <= 3; x++) {
if(y != 1 || x != 1) {
BufferedImage image = rImages.get(random.nextInt(rImages.size()));
puzzle.put(image, new Point(x, y));
System.out.println("Loading new Image at " + new Point(x, y));
rImages.remove(image);
}
}
}
System.out.println(puzzle.size());
}
これは、ロード時にコンソールに出力されるものです。
Loading new Image at java.awt.Point[x=2,y=1]
Loading new Image at java.awt.Point[x=3,y=1]
Loading new Image at java.awt.Point[x=1,y=2]
Loading new Image at java.awt.Point[x=2,y=2]
Loading new Image at java.awt.Point[x=3,y=2]
Loading new Image at java.awt.Point[x=1,y=3]
Loading new Image at java.awt.Point[x=2,y=3]
Loading new Image at java.awt.Point[x=3,y=3]
1
puzzle.size()
8 ポイントがリストされているため、ランダムな BufferedImage を使用して 8 ポイントが追加されpuzzle
、その後削除されるため、8 を返さない理由がわかりません。同じ画像を 2 回選択することはありません。
編集:私はこれを解決しました。アセットが正しく読み込まれませんでした。お時間を無駄にして申し訳ありません。