2014-04-07 3 views
0

내가 수행하려고하는 것은 shipX 배열 목록의 모든 숫자에 1을 추가하는 것입니다. 질문은 어떻게됩니까? 나는 방법 move()가 호출 될 때이 작업을 수행 할 수 있지만이 배열에 새로 온 사람으로서 어떻게 내가, 이런 일이 만들 것배열에 정수에 정수를 추가하는 방법

class Ship 
{ 
    public void paint(Graphics g) 
    { 
     int shipX[] = {500,485,500,515,500}; 
     int shipY[] = {500,485,455,485,500}; 
     g.setColor(Color.cyan); 
     g.fillPolygon(shipX, shipY, 5); 
    } 
    public void move() 
    { 
    } 
} 
+0

당신은 int 배열 – csharpwinphonexaml

답변

4

시작하려면, 당신은 paint()의 지역 범위를 벗어난 그래서 클래스로 포인트에 대한 귀하의 배열을 이동해야합니다 move()은 현재 값에 액세스 할 수 있습니다. move() 메서드가 증가하고 구성 요소를 다시 그리는 데 사용하는 루틴을 호출합니다.

class Ship 
{ 
    //make your polygon points members of the class 
    //so that you can have state that changes 
    //instead of declaring them in the paint method 
    int shipX[] = {500,485,500,515,500}; 
    int shipY[] = {500,485,455,485,500}; 
    //set these to the amount you want per update. They can even be negative 
    int velocityX = 1; 
    int velocityY = 1; 

    public void paint(Graphics g) 
    { 
     g.setColor(Color.cyan); 
     g.fillPolygon(shipX, shipY, 5); 
    } 

    public void move() 
    { 
     //add 1 to each value in shipX 
     for (int i=0; i<shipX.length; i++) 
     { 
      shipX[i] += velocityX; 
     } 
     //add 1 to each value in shipY 
     for (int i=0; i<shipY.length;i++) 
     { 
      shipY[i] += velocityY; 
     } 
     //call whatever you use to force a repaint 
     //normally I would assume your class extended 
     //javax.swing.JComponent, but you don't show it in your code 
     //if so, just uncomment: 
     //this.repaint(); 
    } 
} 

내가 this 대답 지적 JComponentrepaint() 방법은 올바른 스윙 스레드에서 호출 할 필요가 않음을 지적해야하지만.

움직임을 애니메이션으로 만들려면 스윙 타이머의 Java Tutorial을 확인하여 일정에 따라 move() 메서드를 호출 할 수 있습니다. 단추에 ActionListener을 사용하여 Timer을 제어하거나 클릭시 한 번 수동으로 개체를 이동하는 단추를 사용할 수도 있습니다.

+0

괜찮 았지만 1 대신 xVelocity를 어떻게 추가 할 수 있습니까? –

+0

@BrandonG X와 Y 방향 모두에서 속도를 줄 수 있도록 변경했습니다. 수동으로 설정하거나 코드의 다른 곳에서 동적으로 조정할 수 있습니다. – Sam

+0

정확히 무엇을 찾고, 배열에 전혀 익숙하지 않아서, 이것이 내 미래 프로젝트와이 프로젝트에 큰 도움이되었습니다. 직사각형에서 다각형으로 전환하기가 어렵습니다! 마지막으로, 내가 느리게하고 싶다면 마지막으로 +++를 바꿀 수 있을까요? –

3

당신이 배열을 통해 반복하고 각각의 값을 수정하기 만하면됩니다 인덱스 :

for (int i = 0; i < shipX.length; i++) 
{ 
    shipX[i]++; 
} 
2

증가 하나 숫자 하나 ...

for (i=0; i<shipX.length; i++) 
{ 
    shipX[i]++; // same as shipX[i] = shipX[i] +1 
} 

for (i=0; i<shipY.length;i++) 
{ 
    shipY[i]++; 
} 
+0

대신 shipList.을 사용해야할까요? 그 코드를 테스트 해 봤니? 그것은 속성이지 방법이 아닙니다. –

+0

맞습니다. (i = 0; i FCa

관련 문제