자바에서 아이소 메트릭 게임을 프로그래밍하고 있지만 마우스를 가리키는 타일을 가져오고 싶을 때 붙어 있습니다.자바 다이아몬드 모양 아이소 메트릭 맵 타일 선택
계산 방법은 있습니까? 여기
이것은 결과입니다int posX = 10;
int posY = 0;
static int beginY = 500-72;
static int beginX = 800-36;
static int newLineY = 60;
static int newLineX = 200;
posY = ((0+1)*9)-9+beginY/2;
posX = ((beginX)/2)+18-(18*(0+1));
for (int y = 0; y <= world.length-1; y++) {
for (int x = 0; x <= world[y].length-1; x++) {
if (world[y][x] == 1) {
g.drawImage(grass, posX, posY, null);
posX += 18;
posY += 9;
} else if (world[y][x] == 2) {
g.drawImage(wall, posX, posY-38, null);
posX += 18;
posY += 9;
} else if (world[y][x] == 3) {
g.drawImage(stone, posX, posY, null);
posX += 18;
posY += 9;
} else if (world[y][x] == 4) {
g.drawImage(water, posX, posY, null);
posX += 18;
posY += 9;
} else {
posX += 18;
posY += 9;
}
if ((y-pPosX) * (y-pPosX) + (x-pPosY) * (x-pPosY) <= 3*3 && world[y][x] != 0 && world[y][x] != 2 && world[y][x] != 4) {
g.drawImage(hollow, posX-18, posY-9, null);
}
if (y == selectedX && x == selectedY) {
g.drawImage(selected, posX-18, posY-9, null);
}
if (world2[y][x] == 9) {
g.drawImage(character, posX-18, posY-53, null);
}
}
posY = ((y+1)*9)+beginY/2;
posX = ((beginX)/2)-(18*(y+1));
}
을 렌더링하는 코드입니다. beginX
다이아몬드의 상단 모서리에 beginY
시작 : 여기
정보가 충분하지 않습니다. 명확히하십시오. 예를 들어 엔진, 일부 openGL 구현 또는 스윙 기반 GUI (Canvas 사용)를 사용하고 있습니까? 코드를 추가 할 수 있다면 가장 좋을 것입니다. 어떻게 타일을로드합니까? 이미지입니까, 직접 페인트합니까? – GameDroids
나는 엔진이나 OpenGL을 사용하지 않고 JFrame 만 사용한다. – mcdorli
나는 Buffered Image를 생성하고 그 이미지의 경로를 정의한다. 코드를 삽입합니다. – mcdorli