在java中添加许多对象

时间:2014-07-11 01:54:58

标签: java class lwjgl

如果我错了,请纠正我。我是java的新手,我正在尝试使用lwjgl创建一个简单的物理引擎。目前代码有点凌乱,但它启动并正常工作,物理工作完美。我试图想办法让用户点击鼠标并添加physics_object。目前,它是可能的,但有一个限制,我必须编码所有对象名称。

添加物理对象:

phys_square rec1 = new phys_square(100, 100, 10.0f, -1.0f, 10, 0.0f, 0.5f, 0.0f);

和phys_square类的代码:

package quad;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class phys_square {

float velocityY;
float velocityX;
int x;
int y;
int particleSize;
float red;
float green;
float blue;
public phys_square(int xpos, int ypos, float velocity_x, float velocity_y, int size, float red, float green, float blue) { this.x = xpos; this.y = ypos; this.velocityY = velocity_y; this.velocityX = velocity_x; this.particleSize = size; this.red = red; this.green = green; this.blue = blue;} 
public void updatePos() {
    if ( this.y == 0 | this.y < 0) {
        this.velocityY *= -0.825f;
    }
    if (this.y > 0 | this.y >= this.velocityY) {
        this.y -= this.velocityY;
        this.velocityY += 0.2f;
    }

    if (this.x <= 0 | this.x + quad_main.particleSize >= 800) {
        this.velocityX *= -0.5f;
    }
    if (this.x > 0 | this.x >= this.velocityX) {
        this.x -= this.velocityX;
        if (Math.abs(this.velocityX) <= 0){
            this.velocityX -= 0.2f;
        }
    }
    if (this.x < 0) {
        this.x = 0;
    }
    if (this.x > 800 + quad_main.particleSize) {
        this.x = 800 + quad_main.particleSize; 
    }
    if (this.y < 0){
        this.y = 0;
    }
}
public void render() {
    window.particle(this.x, this.y, this.red, this.green, this.blue, this.particleSize);
}
public static void main(String[] args[]){

}
}

有没有办法创建多个对象而无需手动为它们分配所有名称?我听说过PHP和其他一些语言可以使用字符串的值作为另一种语言的名称。

1 个答案:

答案 0 :(得分:2)

注意:此答案假设您根本不需要名称,而不是您希望在运行时创建名称。使用哈希映射。

您可以将对象存储在列表中,例如ArrayList。这就像一个对象数组,但是可以调整大小,并且让你能够随意添加它们,使用索引访问它们,并迭代它们。


将此与您的导入:

import java.util.ArrayList;  

以下代码会创建您的ArrayList

ArrayList<phys_square> squaresList = new ArrayList<phys_square>();

您可以像这样向ArrayList添加一个对象:

squaresList.add(new phys_square( /* paramenters here */));

如果要处理对象,可以遍历列表。以下代码对列表的每个元素执行方法。

for (phys_square sq : squaresList) {
    processPhysicsStuff(sq);
    processGraphicsStuff(sq);
}

您可以查看Arraylist here的文档。阅读,这是一个非常有用的课程。