2013-10-01 3 views
0

안녕하세요 여러분, 생각을하고 지금까지 약간의 진전을 이루었습니다. 좌표에 따라 내 레벨 지형을 변경할 수 있기를 원합니다. 좌표는 클릭 한 위치를 기준으로 선택되며 점의 ArrayList에 추가됩니다. 다음과 같이이 점은 자신의 x 값으로 분류하고 그려집니다 :좌표를 사용하여 2D '지형'을 생성했습니다.

public Image renderTerrain() throws SlickException { 

    Image image = new Image(MAP_WIDTH, MAP_HEIGHT); 

    Graphics gr = image.getGraphics(); 

    int startx = 0; 
    int starty = 0; 

    for(Point point : points) { 

     starty = (int) point.getY(); 

     int tox = (int) point.getX(); 
     int toy = (int) point.getY(); 


     for(int x = startx; x < tox; x++) { 
      for(int y = starty; y < MAP_HEIGHT; y++) { 
       gr.drawLine(x,y,x,y); 
      } 
     } 

     startx = tox; 

    } 

    gr.flush(); 

    return image; 
} 

이 지금처럼 뭔가를 렌더링 것 :

enter image description here

그러나 내가 달성하고자하는 것은 너무 비슷합니다.

enter image description here

어떤 변화 나는 이것을 달성하기 위해해야 ​​할 것인가?

감사합니다.

+0

, 당신 코드가 비참하게 비효율적 인 것 같습니다

여기 내 솔루션입니다. 'fillRect'가 효과적 일 때'line'을 사용하는 것처럼 보입니다 ... 그냥 말하기 – MadProgrammer

+0

그래, 내 해결책을 확인했다. –

답변

0

나는 대답을 기다리는 동안 내 자신의 질문에 대답했다.

public Image renderTerrain() throws SlickException { 

    Image image = new Image(MAP_WIDTH, MAP_HEIGHT); 

    Graphics gr = image.getGraphics(); 

    int startx = 0; 
    int starty = (int)points.get(0).getY(); 

    for(Point point : points) { 


     int tox = (int) point.getX(); 
     int toy = (int) point.getY(); 

     gr.setColor(Color.pink);//line 
     gr.drawLine(startx,starty,tox,toy); 
     gr.setColor(Color.green); //height 
     gr.drawLine(tox, toy, tox, MAP_HEIGHT); 
     gr.setColor(Color.yellow); //base 
     gr.drawLine(tox, MAP_HEIGHT-1, startx, MAP_HEIGHT-1); 
     gr.drawLine(tox, MAP_HEIGHT-2, startx, MAP_HEIGHT-2); 

     startx = tox; 
     starty = toy; 
    } 

    gr.flush(); 

    return image; 
} 

결과가 : 나에게

enter image description here

관련 문제