Java / Processing将一个类附加到另一个类

时间:2013-05-26 09:21:48

标签: java class processing game-engine game-physics

我正在编写一个关于处理的2D游戏库,我目前正处理物理方面的问题。我有一个名为Object的类 - 用于操作图像。我希望能够将我的Physics类“附加”到Object类 - 这样我就可以通过Object访问所有的Physics函数了,例如:

//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,而且这段代码目前还没有设置为库,只是直接从处理中编译。

3 个答案:

答案 0 :(得分:0)

从命名约定来看,您的对象模型看起来并不适合我。对象不是游戏的属性,所以我看不到对象如何扩展游戏。物理学也一样。

根据我的理解,游戏是具有物体,玩家,图形等属性的整个物体。物体可以具有物理特性和其他属性。所以我首先要理顺对象模型。

关于你的问题,你可以创建一个对象可以调用的物理接口。您可以拥有一个物理库,它可以创建对象物理状态的实例并将它们附加到对象,这样在游戏过程中您就可以跟踪物理对象。即一颗子弹飞过太空。但这当然取决于你的物理实现方式。

答案 1 :(得分: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)
}

答案 2 :(得分:0)

球和物理实例没有彼此参考。考虑做这样的事情(在设置或绘图中,或者在两个类之外的某些初始化例程中更好):

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

然后你可以在你的球中引用物理实例,你可以在它上面调用方法。可能物理方法projectile也需要引用你的球,如下所示:

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

除此之外,请考虑命名conventions of Java

即。以大写字母开头(并且不要将其称为对象)。