2012-02-08 1 views
0

Java2D를 사용하여 Java에서 2D 플랫폼 게임을 시작할 예정이며 세계를 만드는 방법을 고안하려고합니다. 나는 지난 몇 시간 동안 이것에 대해 지금까지 읽고 있었다. 그리고 내가 말할 수있는 한, 비교적 효과적인 방법은 텍스트 파일에 값의 "매트릭스"를 넣는 것이다.이 프로그램은 (2D 배열에 저장된)지도를 만들려면타일 맵의 시작점

내 계획은 세계의 다양한 텍스처에 대한 ImageIcon을 표시하는 여러 JComponents를 갖는 것입니다. JComponent 오브젝트는, 지정된 배열 인덱스의 문자에 의존합니다.

  1. 간과 할 수있는 것이 있습니까?
  2. 이 도식이 배경 이미지와 함께 작동합니까, 즉 공백을 나타내는 문자가있는 경우 배경의 일부가 표시됩니까?

게으른 질문 인 경우 사과드립니다. 게으름이 아닌 것을 알려드립니다. 나는 코드를 해킹하기 전에 이것을 계획하려고하고있다.

답변

0

이유가없는 한 각 타일마다 다른 구성 요소를 사용하는 것은 좋은 방법이 아닙니다. 캔버스를보고로드 된 이미지를 다른 오프셋으로 표시하십시오.

예 : 480x640 캔버스 128x16 이미지 파일 (8 개 16 × 16 타일 이미지를 포함) 그래서 파일이 (문자 등) 숫자의 무리를 가지고, 우리는 이미지의 8 개 타일 0-7을 말할 것이다. 파일에는 캔버스와 동일한 그리드로 배치 된 30x40 숫자가 있습니다. 그래서

1 2 1 3 4 8 2 ... ...

그리고 코드를 표시 할 수는 기본적으로 매핑

Graphics g = //initialize graphics; 
Image yourTileImage = //load your image; 
for (int xpos = 0; xpos < maxX; xpos++) 
    for (int ypos = 0; ; ypos < maxY; ypos++) 
     int number = //get number from map file 
     g.drawImage(Image yourTileImage, 
      xpos * 16, ypos * 16, xpos * 16 + 15, ypos * 16 + 15, 
      number*16, 0, number+15, 15, 
      ImageObserver observer) 

(테스트하지, docs 기준) 같은 것을 끝 타일 ​​이미지의 수를 입력 한 다음 해당 타일 이미지를 캔바스 (x, y) 좌표의 올바른 위치에 놓습니다.

+0

첫째, 덕분에 당신의 응답을. 난 당신이 여기 수행하고 무엇을 본 것 같다 논리 감사합니다. 그러나 타일을 별도의 구성 요소로 사용하여 충돌 탐지를위한 자체 메서드를 작성할 수 있도록했습니다. 또한 단일 개체를 다시 칠할 수 있습니다. –

+0

Image 클래스를 확장하여이 작업을 수행 할 수 있습니까? –

+0

이것은 세계를 표시하는 방법 일뿐입니다. 충돌 감지 등은 표시된 좌표 대신 실제 좌표를 처리해야하므로 프레젠테이션에 사용 된 메서드와 관련이 없습니다. 대신에 Swing을 사용하는 경우 당신이 JPanel에서보고 싶은 awt의 Canvas 대신. 다시 칠해서 화면을 새로 고침했다면 예, 전체 캔버스가 새로 고침됩니다. 화면의 일부로 그려지는 내용을 변경할 수 있기를 원한다면 더 자세히 조사해야합니다. – Thomas

0

Java에는 여러 가지 좋은 2D 그래픽 엔진이 있습니다. 휠을 다시 발명하려고 시도하는 것보다는 그 중 하나를 사용하는 것이 나을 것입니다. (아주 떨어져 다른 어떤에서 그들은 GPU의 사용을 만들 것입니다.

을 쉽게 당신이 필요 않는 하나를 발견한다.

는 는