2013-12-15 2 views
-2

두 가지 클래스가 있습니다 : 주 및 단위. 단위 클래스는 클래스의 상단에 선언 된 변수 xy와 같은 초기화 :클래스 인스턴스의 메서드는 변수를 변경하지 않습니까?

public Unit(int health, int damage, int x, int y) { 
     this.x = x; 
     this.y = y; 
     Main.drawQuad(x, y, 15, 15); 
    } 

나는 x 또는 y 변수를 받아 그들에게 하나를 추가하는 방법이있다. 나의 이해를 위해, 이것은 움직일 것이다 (Main.drawQuad는 단순히 쿼드를 그리는 방법이지만, 짧게한다). 대신, 아무 것도 수행하지 않으며 xy은 절대로 변경되지 않습니다.

다르게 선언해야합니까? 그들을 다르게 접근합니까? 다른 변수 범위를 시도했습니다. Main 클래스를 통해 변경해야합니까? 나는 LWJGL로 일하고있다.

+1

변수를 변경하는 코드를 확인해야합니다. 그리고 당신이 이것을 이해할 수 없다면 아직 게임을 만들지 말아야한다고 생각합니다. 범죄는 없습니다. –

+0

Java는 값으로 전달됩니다. –

+0

@ opiop65, 나는 전에 이런 문제를 겪어 본 적이 없습니다. 나는 제대로 교육받지 못했고, LWJGL을 너무 많이하지 않았습니다. – IHazABone

답변

1

아니요.이 방법으로 움직이지 않습니다. '움직이게'하는 것이 당신의 직업입니다. xy 값을 증가시키고 그 다음에 드로잉 API를 다시 호출하여 쿼드를 다시 그려야합니다.

+0

알겠습니다. 고마워요. 인스턴스가 업데이트 루프에서 호출되는 render 메서드에서 만들어 졌기 때문에 조정할 것이라고 가정했습니다. – IHazABone

+1

@IHazABone 매우 환영합니다. 각 반복마다'x'와'y'를 증가시키는 * for-loop *에'drawQuad'를 넣고 매번'drawQuad'를 호출하십시오. 무슨 일이 일어나는지보십시오. :-) – GGrec

+0

이전에 지워지지 않은 완전히 새로운 쿼드가 그려지는 것은 어떻게됩니까? 이전에 이런 일이 있었음을 기억합니다. 그러나 그것을 고치거나 잘못하고있는 것을 기억하지 못합니다. – IHazABone

1

많은 문제가있을 수 있습니다. 잘못된 코드가 실제로 표시되지 않았습니다.

  • 아마 당신은 x와 y를 변경한다고 생각할 것입니다.

  • 아마도 새 값으로 쿼드를 다시 그리지 않습니다.

  • 아마도 x와 y를 잘못된 개체로 변경하고있을 수 있습니다.

가장 좋은 방법은 디버거로 코드를 단계별로 그들이 변경할 때, 값이 무엇인지에주의를 기울여야하는 것입니다, 그들은 어떤 객체이며, 무엇을 나중에 그 값을 발생합니다.

+0

유닛 클래스 내에서 쿼드를 다시 그려야한다는 것을 깨닫지 못했습니다. 나는 메인 클래스에서만 그렇게했다. 고맙습니다. – IHazABone

관련 문제