퍼즐 게임을 만들고 있는데 이제는 8 조각을 무작위로 3x3 눈금에 배치하고 있지만 모든 이미지가 HashMap에 추가되지는 않습니다. 왜 그 사람이 보이나요? 8 점 나열됨에 따라개체가 HashMap에 추가되지 않았습니다.
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
내가 왜 표시되지 않습니다 : 여기에
내가 퍼즐을 준비하는 데 사용하는 코드입니다 :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());
}
이이로드 될 때 어떤 콘솔 인쇄입니다 puzzle.size()
은 임의의 BufferedImage가있는 puzzle
에 8 포인트가 추가되어 8을 반환하지 않습니다. 그러면 동일한 이미지가 두 번 선택되지 않습니다.
편집 :이 문제를 해결했습니다. 애셋을 잘못로드했습니다. 시간을 낭비해서 죄송합니다. 난이 실행할 때
은 우리에게'자산의 구현을보기 '. 'a2'와'a9'는 어떻게 만들어지며'hashCode()'와'equals()'에 따라 다릅니 까? – Andreas
'rImages.remove (image);'뒤에'System.out.println (puzzle.size());'를 넣어 결과가 무엇인지 알려주시겠습니까? – saman
@ saman 그것은'1'을 8 번 인쇄합니다. – TheGamerPlayz