2013-01-03 2 views
1

저는 약 한 달 동안 꽤 기본적인 자바 게임을 작업 해 왔습니다. 커다란 문제에 부딪 혔습니다. 모니터의 해상도가 1280 x 720 이상이면 모든 모니터에서 정상적으로 작동합니다. 이는 게임을 실행하도록 설정 한 것입니다. 나는 친구의 컴퓨터에서이 프로그램을 실행할 때까지 문제가 있다는 것을 깨닫지 못했고 화면에 모두 맞지 않았습니다. 여기서 가장 중요한 점은 내가 2D Top-Down 슈터 게임을 만들고 있으며 각 레벨의 벽과 파워 업에는 모두 하드 코딩 된 좌표가 있다는 것입니다. 나는 모든 것을 화면 크기에 비례하여 만들 수는 없으므로 매우 어려울뿐만 아니라 게임이 어려울뿐만 아니라 화면 해상도도 다양해질 수 있기 때문에 모든 것을 화면 크기에 상대적으로 만들 수는 없습니다. 한 가지 해결책은 800 x 600으로 실행하고 모든 레벨을 작게 만드는 것이 겠지만 그 공간은 내가 원하는만큼의 공간이 아닙니다.화면에 맞게 하드 코딩 된 좌표로 게임 크기를 조정 하시겠습니까?

모니터에 맞게 프로그램을 확장 할 수있는 방법이 있는지 알고 싶습니다. 예를 들어, 친구의 1024x768과 같이 4 : 3 모니터를 실행 한 경우 프로그램이 비례하여 화면에 맞게 나타나길 원합니다. (따라서 화면 상단과 하단에 검은 색 바가 나타납니다. 4 : 3 모니터)하지만 새 벽과 파워 업을 새로 조정 된 화면과 관련하여 배치해야합니다.

프로그램에서 픽셀을 "늘리거나" "축소"할 수있는 방법이 있습니까? 모든 것이 창에 표시되고 크기가 조정됩니까? 말 그대로 아니더라도. 어떤 도움을 주셔서 감사합니다.

+0

어떻게 표시되는 이미지를 만드시겠습니까? 2D 도면? GIF 파일? Java에서 무언가입니까? 아니면 하위 레벨 프리미티브를 어떻게 든 또는 라이브러리에 액세스하고 있습니까? –

답변

0

코드에서 논리 해상도를 사용하고 출력하는 동안 크기를 조정하십시오.

1

당신의 Graphics2D/당신이 표준 그래픽을 사용하는 가정, 그림을에 확장 할 수 있습니다 :

private static final double SCALE = 0.75; 
private static final double INV_SCALE = 1.0/SCALE; 

@Override 
public void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D)g; 
    g2.scale(SCALE, SCALE); 
    ... 
    g2.scale(INV_SCALE, INV_SCALE); 

}

스케일 인수 (여기 SCALE)는 물론 좀 더 어려운 설정하는 것입니다.

마우스 좌표는 자신을 조정해야합니다.

+1

관련이 [답변] (http://stackoverflow.com/a/4292509/230513) 마우스 조정에 대한 두 가지 접근 방식을 비교합니다. – trashgod

+0

위대한 작품! 고맙습니다. 마우스 좌표는 역 스케일로 곱하면됩니다. 나는 바보 같은 질문을하고 있다고 생각했지만, 기뻤다. – Monkeybro10

관련 문제