2013-10-21 3 views
0

저는 Java를 배우고 있으며 스윙 GUI를 가지고 놀고 있습니다. 또한 대형 로긴 캐키 던전 빌더 알고리즘이 어떻게 작동하는지 이해하려고 노력하고 있습니다. 이미지 타일을 사용하여 던전 건물 알고리즘을 jframe에 프린트하는 방법은 무엇입니까?

나는 알고리즘에 대한 자바에서이 예를 통해 온 -

[링크] http://roguebasin.roguelikedevelopment.org/index.php?title=Java_Example_of_Dungeon-Building_Algorithm

그리고 스윙 JFrame의 이미지 타일을 표시하려면이 코드를 수정에 관심 -

//used to print the map on the screen 
public void showDungeon(){ 
    for (int y = 0; y < ysize; y++){ 
     for (int x = 0; x < xsize; x++){ 
      //System.out.print(getCell(x, y)); 
      switch(getCell(x, y)){ 
      case tileUnused: 
       System.out.print(" "); 
       break; 
      case tileDirtWall: 
       System.out.print("+"); 
       break; 
      case tileDirtFloor: 
       System.out.print("."); 
       break; 
      case tileStoneWall: 
       System.out.print("O"); 
       break; 
      case tileCorridor: 
       System.out.print("#"); 
       break; 
      case tileDoor: 
       System.out.print("D"); 
       break; 
      case tileUpStairs: 
       System.out.print("<"); 
       break; 
      case tileDownStairs: 
       System.out.print(">"); 
       break; 
      case tileChest: 
       System.out.print("*"); 
       break; 
      }; 
     } 
     if (xsize <= xmax) System.out.println(); 
    } 
} 

JFrame에서 새로운 그리드를 생성하여 가장 좋은 방법이 무엇인지 궁금합니다. 누군가 샘플 코드를 제공 할 수 있습니까?

감사합니다.

답변

1

모든 셀 이미지의 크기가 같다고 가정합니다.

컨테이너에 GridLayout을 설정하고 각 타일의 눈금에 JLabels을 추가하십시오.

또는 JPanel의 paintComponent (Graphics g) 메서드를 재정의하고 각 이미지를 적절한 x = width * column, y = height * 행으로 페인트합니다.

+0

이것은 내가 생각하기에 단지이 코드를 수정하여 jlabels로 인쇄하는 데 문제가있는 것입니다. –

0

화면에 글자를 표시하고 싶다면 하나의 텍스트 영역에 던전 맵을 채울 수도 있습니다. 또는 System.out에 맵을 작성하십시오.

이미지를 표시하는 순간은 스윙이 편리해질 때입니다.

룸 객체의 이중 배열, 룸 구상 서브 클래스 등 DirtWall, StoneFloor을 가지고 추상 클래스 인으로 몇에게 같은 수준의지도 등의 별도의 클래스를, 넣어 ​​부끄러워하지 말고

그리고 JFrame의 GridLayout을 ImageIcon으로 채우는 MapView.

또는 roguelike 인터페이스를 사용하려면 curses 라이브러리를 살펴보십시오. 터미널 창에서 문자를 배치하는 방법입니다. 자바로부터 JNI 바인딩을 생성 할 수있다. 또는 http://www.pitman.co.za/projects/charva/이 바인딩과 같은 상단에 스윙 모양의 API를 만듭니다.