0

私は処理に関する 2D ゲーム ライブラリを作成しており、現在は物理的な側面を扱っています。画像を操作するために使用される Object というクラスがあります。オブジェクトを介してすべての物理関数にアクセスできるように、物理クラスをオブジェクト クラスに「アタッチ」できるようにしたいと考えています。

//Scroll to left to see more of comments
class Object extends Game{ //It's worth pointing out that all of my classes extend a Game class
    Object(String name){ //A way to add an image to my Object and initialise the class fully
        PImage image = loadImage(name);
    }

    void attachPhysics(){ //I want to be able to call this so that I can directly access functions in the Physics class

    }
}


class Physics extends Game {  //My Physics class also extends the Game class

     Physics(){
          //Main initialisation here
     }

     void projectile(int angle, int speed, int drag){
        //Projectile code goes here


     }

}

したがって、これら 2 つのクラスがあれば、次のように呼び出すことができます。

//Scroll to left to see more of comments
void setup(){
    Object ball = new Object("ball.gif");
}

void draw(){ //In processing draw is similar to main in java
    ball.attachPhysics(); //I attach Physics

    ball.projectile(40, 5, -1); //I should then be able to access Physics classes via the ball Object which can manipulate the ball Object (call on its functions as well)
}

誰かがこれについて私を助けることができれば、私は感謝しています.必要に応じて完全なコードを投稿できます. 処理は、いくつかの機能が追加された単なる Java であり、このコードは現在ライブラリとして設定されておらず、処理から直接コンパイルされているだけであることに注意してください。

4

3 に答える 3

0

命名規則から、あなたのオブジェクト モデルは正しくないように見えます。オブジェクトはゲームのプロパティではないため、オブジェクトがゲームを拡張する方法がわかりません。物理でも同じ。

私の理解では、ゲームはオブジェクト、プレイヤー、グラフィックスなどの属性を持つ全体です。オブジェクトは物理学やおそらく他の属性を持つことができます。そこで、まずオブジェクト モデルを整理します。

あなたの質問に関しては、オブジェクトが呼び出すことができる物理インターフェイスを作成できます。ゲーム中に物理オブジェクトを追跡できるように、オブジェクトの物理状態のインスタンスを作成してオブジェクトにアタッチする物理ライブラリを使用できます。つまり、宇宙を飛んでいる弾丸。しかし、これはもちろん、物理がどのように実装されているかによって異なります。

于 2013-05-26T09:30:59.187 に答える
0

物理オブジェクトをアタッチするために「オブジェクト」クラスの新しいオブジェクトを作成する必要はありません。これを使用して、現在の/呼び出し元のオブジェクトに物理オブジェクトをアタッチします。同じための更新された描画方法は次のとおりです。

void draw(){ //In processing draw is similar to main in java
    this.attachPhysics(); //I attach physics

    this.projectile(40, 5, -1); //I should then be able to access physics classes via the ball object which can manipulate the ball object (call on its functions as well)
}
于 2013-05-26T09:31:35.043 に答える
0

ボール インスタンスと物理インスタンスは相互に参照していません。次のようなことを検討してください (セットアップまたは描画で、または両方のクラス外の初期化ルーチンで):

physics phys = new physics();
ball.attachPhysics(physics);

次に、ボール内の物理インスタンスへの参照を取得し、メソッドを呼び出すことができます。おそらく、物理メソッドprojectileでもボールへの参照が必要になるため、次のようになります。

projectile(40, 5, -1, this);// this is the refence to the ball instance

それ以外に、 Javaの命名規則を考慮してください

つまり、大文字から始めます (オブジェクトとは呼ばないでください)。

于 2013-05-26T09:39:35.447 に答える