gpt4 book ai didi

java - 在java中添加多个对象

转载 作者:行者123 更新时间:2023-11-30 09:05:52 24 4
gpt4 key购买 nike

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

添加物理对象:

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 和其他一些语言中可以使用字符串的值作为另一个字符串的名称。

最佳答案

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

您可以将对象存储在列表中,例如 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 .仔细阅读,这是一个非常有用的类(class)。

关于java - 在java中添加多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com