2012-04-02 6 views
1

私はJavaで初めてSlick2dでゲームを作っています。私はクラスプレーンを作成しました。 (私もjavaで新しいです)私のゲームのクラスを作成する(Slick)

私のクラスのImageクラスから拡張するのが正しいのか、私のクラス(publicに簡単にアクセスできるように公共のImage属性を使用する方が良いか分かりませんproyectの残りのメソッド)

import org.newdawn.slick.Image; 
import org.newdawn.slick.SlickException; 

public class Plane extends Image{ 
private float x; 
private float y; 

public Plane(String path, float x, float y) throws SlickException{ 
    super(path); 
    this.x = x; 
    this.y = y; 

} 

    public float getX(){ 
    return x; 
} 

public float getY(){ 
    return y; 
} 

public void move(float hip){    
    float rotation = this.getRotation(); 
    x+= hip * Math.sin(Math.toRadians(rotation)); 
    y-= hip * Math.cos(Math.toRadians(rotation)); 
} 

} 

答えて

5

私はslick2d知らないが、私はあなたのクラスがImageを拡張しますが、画像の属性を持つべきではないと思います。延長は、通常はそうではなく平面 Imageであることを意味します。は、テクスチャ/画像です。

さらに、イメージはパブリックではなく、保護された/プライベートであり、パブリックゲッターとセッターによってアクセスされるべきです。そうすればカプセル化が増え、画像自体を公開する際に発生する可能性のある問題を防ぐことができます。

+0

ありがとうThomas。今私のコンストラクタが変更されました:スーパー(パス) - >イメージ=新しい画像(パス) – kirchhoff

+0

私はスリックに精通しています。 @Thomasに同意するつもりです - Plane *には画像があります。 – jefflunt

0

あなたのクラスがImageを拡張する場合、技術的にはクラスはImageクラスのすべてのプロパティを継承し、理論上はImageになります。

あなたのコードから、私はあなたのいずれかをお勧め:ちょうどあなたのクラスのイメージ変数を作成して、代わりに画像を拡大する

  1. を。
  2. イメージを拡張し、このイメージを使用する別のクラスを作成します。
+0

自分のクラスにImage変数を作成しました(保護されています)。私は、メインクラスのいくつかのメソッドにアクセスできます。答えてくれてありがとう。 – kirchhoff

+0

問題ありません。あなたのゲームを楽しんでください! –

関連する問題