0

おそらく非常に基本的な Java の問題ですが、エンティティ クラスに 2 つの変数があります。

public class Entity {

int posX;
int posY;

public Entity(int posX, int posY){
    this.posX = posX;
    this.posY = posY;
}

public void update(){

}

public void draw(Graphics2D g2d){

}

}

私のプレーヤーと敵のクラスはそれを拡張し、2 つの変数からレンダリングします。そのようです:

public void draw(Graphics2D g2d) {
    g2d.drawImage(getPlayerImg(), posX, posY, null);
    if (showBounds == true) {
        g2d.draw(getBounds());
    }
}

これらの変数に次のようにアクセスする必要があります (これは敵のクラスにあります)。

public static void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
}

posX と Player.posX は、Entity.java の posX の修飾子を static に変更する必要があるというエラーをスローします。しかし、静的に変更すると、敵クラスのレンダラーが機能しなくなり、敵が画面に表示されなくなります。これを可能にする変数を作成するにはどうすればよいですか。

public static void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
}

それでも私の敵をレンダリングしますか?テキストの壁で申し訳ありません。回答があれば大いに役立ちます。

4

2 に答える 2

2

メソッドは静的であるため、移動する女性をmoveFemale知る必要があります。palyer への参照を渡すか、move メソッドをプレーヤーの非静的メンバー メソッドにする可能性があります。

于 2012-10-28T15:53:51.990 に答える
0

staticメソッドから修飾子を削除する必要があると思いますmoveFemale

 public void moveFemale(){
    if(posX <= Player.posX){
        //do AI code
    }
  }
于 2012-10-28T15:53:48.667 に答える