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


     }

}

所以如果我有这两个类,我就可以像这样调用它们:

//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

球和物理实例之间没有相互参照。考虑做这样的事情(在 setup 或 draw 中,或者在两个类之外的一些初始化例程中更好):

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 回答