이것은 내 첫 번째 질문이며, 취미로 프로그래밍하므로 취미로 프로그래밍하면 도움이됩니다.
십자형의 중심점을 읽는 기능이 있습니다. 게임에서의 위치 찾기와 같은 것. 코드는 다음과 같습니다.
public static Point location(BufferedImage image) {
int pixelLeft;
int pixelTop;
Point point = new Point();
for (int i = Main.RADAR_TOP+1; i < Main.RADAR_BOTTOM; i++) {
pixelLeft = image.getRGB(Main.RADAR_LEFT+7, i);
if ((((pixelLeft>>16) & 0xff) > 35 &&
((pixelLeft>>8) & 0xff) > 35 &&
((pixelLeft) & 0xff) > 35)){
point.y = i;
break;
}
}
for (int j = Main.RADAR_LEFT+1; j < Main.RADAR_RIGHT; j++) {
pixelTop = image.getRGB(j, Main.RADAR_TOP+5);
if ((((pixelTop>>16) & 0xff) > 35 &&
((pixelTop>>8) & 0xff) > 35 &&
((pixelTop) & 0xff) > 35)){
point.x = j;
break;
}
}
System.out.println("location: "+point.x+","+point.y);
/** lastX = point.x;
lastY = point.y;*/
return point;
}
이 기능은 때때로 주 응용 프로그램으로 제어를 반환하지 않습니다. 기본적으로 멈추게됩니다. 따라서 함수의 마지막 주석은 검사를 수행합니다. 먼저 함수가있는 클래스의 정적 멤버를 읽는 것과 관련이 있다고 생각 했으므로 끝에 보았 듯이 주석을 달았습니다. 그러나 문제는 여전히 발생합니다.
이 동작에 대한 이유를 실제로 볼 수 없거나 생각할 수 없습니다. 저에게 실수 나 다른 것을 지적 할 수있는 의견이나 의견을 많이 주시면 감사하겠습니다.
코드의 다른 부분을 주석 처리 해 보셨습니까? 나는 일반적으로 루프를 의심하지만, 그들은 언뜻 보면 괜찮아 보입니다 ... – Stephen
이미지의 크기에 따라, 이것은 단순히 매우 느릴 수 있습니다. System.out.println을 루프에 넣고 실제로 실행을 멈추었는지 아니면 매우 오랜 시간 동안 만 실행했는지 확인해 보았습니까? – Nicolas78
또한 RADAR_ [BOTTOM, ...]의 값은 무엇이며 이미지의 크기는 얼마입니까? 실제 이미지 크기를 벗어난 RGB 값을 찾기 시작할 수 있습니까? 뭔가 잘못되어 가면 프로그램을 잠글 수있는 상상할 수 있습니다. – Nicolas78