2011-07-29 1 views
4

그래서 저는 새로운 것을 궁금해했습니다.하지만 주위를 돌아 다니는 길을 알고 있지만 2 차원 타일 게임을 만들고 싶었습니다. 이제지도를 만들기 위해 2 차원 배열로이 작업을 수행 할 수 있다고 들었습니다. 그러나지도를 그림처럼 JFrame 화면에 표시하려면 어떻게해야합니까? 그래서 여기 배열 /지도의 예 :JFrame 자바에 2D 배열 쓰기 Java

1111111111 
1011011001 
1001100011 
0000100011 
0000000000 
2222222222 

0 = blueSky.png 
1 = cloud.png 
2 = grass.png 

감사합니다!

import javax.swing.*; 
import java.awt.*; 

public class Game extends JFrame { 

private static final long serialVersionUID = 1L; 

    public static void main(String[] args) { 
     ImageIcon sky = new ImageIcon ("/Users/pro/Desktop/sky.png"); 

     JPanel grid = new JPanel(); 
     grid.setLayout(new GridLayout(25, 25)); 
     for (int i = 0; i < 25; i++) { 
      for (int n = 0; n < 25; n++) { 
       grid.add(new JLabel(sky)); 
      } 
     } 
     JFrame frame = new JFrame("Map"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     //frame.setPreferredSize(new Dimension(640, 400)); 
     frame.add(grid); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

이 하늘 사진과 함께 일부 타일을 인쇄하지만 어떻게 내가 하단 행 타 사진을 만들 수 있죠 : EDIT 2 그래서 나는 지금이 있나요?

답변

4

JLabel을 아이콘으로 사용하고 GridLayout을 사용하여 레이아웃하는 것이 좋습니다. 데이터 자체가 가능성이 개최 될 것이라고

5

나는 비 GUI 모델로 2D 배열을 생각 하는데요, : 샘플 코드 및 스크린 샷

관련 질문/답변 일부 데이터 파일, 아마도 텍스트 파일에서 아마도 int의 2D 배열, 아마도 사용자 정의 Cell 클래스 (다시 말하면 여전히 모든 비 GUI)에 의해 보유 될 데이터를 읽는 메소드가있을 것입니다. 그러면 GUI는 모델을 해석하고 논리적 인 방식으로 데이터를 표시해야합니다. 이 작업은 GridLayout을 사용하는 JPAnel이 보유한 JLabel의 2D 그리드를 만든 다음 ImageIcon을 사용하여 이미지를 유지하고 모델의 상태를 기반으로 각 JLabel의 아이콘을 설정하여 수행 할 수 있습니다. 사용

편집 한
그래서 가능한 클래스는 다음과 같습니다

  • 가 TileType : 데이터 파일
  • TileCell 보유 숫자와 타일 개념 연관 열거 : 비 GUI 클래스, 보유 TileType 필드는 셀에서 찾을 수있는 항목 목록을 보유 할 수도 있습니다 (게임에 필요한 경우). 이웃에 대한 정보가있을 수 있습니다.
  • TileCellGrid : TileCells의 2D 그리드를 유지하는 비 GUI 클래스입니다.
  • GridDataIO : 파일에 그리드 데이터를 읽고 쓰는 유틸리티 클래스입니다.
  • GameGrid : JPanel을 사용하여 GridLayout을 유지하는 GUI 클래스로, ImageIcon이 OP에 나열한 이미지를 표시하는 JLabels를 보유합니다.

    좋아 어떻게 내가 everyLabel에 적합한 사진을 설정할 수 있습니다 : 귀하의 질문에 대한

편집 2
?

나는 observer/observable 패턴을 사용하여 모델에 리스너를 추가합니다. 모델이 변경 될 때마다 GUI 또는보기를 알려야합니다. 그런 다음 뷰는 데이터 배열을 요청하고 배열을 반복하며 어레이를 반복하면서 변경해야하는 이미지 아이콘을 변경합니다.

+5

조금 늦었지만 내 아이디어가 aioobe와 비슷하다는 것을 알 수 있습니다. 그에게 1+! –

+0

좋아, 어떻게 모든 라벨에 맞는 그림을 설정할 수 있습니까? –

+0

@JanVos : 위의 대답에서 "편집 2"를 참조하십시오. –