Processing/Java-类数组有问题

Processing/Java-类数组有问题,java,arrays,class,object,processing,Java,Arrays,Class,Object,Processing,这可能是一个非常愚蠢的问题,但我很难在屏幕上显示我的课程的多个副本。 我创建了一个小行星类,可以在屏幕上生成和移动小行星。然而,当我尝试在我的主体中调用这个类的多个版本时,它仍然只显示一个小行星 Main int lrgAsteroids = 4; Asteroid[] asteroid = new Asteroid[lrgAsteroids]; void setup() { size(800,800); for (int i = 0; i < lrgAsteroids; i++

这可能是一个非常愚蠢的问题,但我很难在屏幕上显示我的课程的多个副本。 我创建了一个小行星类,可以在屏幕上生成和移动小行星。然而,当我尝试在我的主体中调用这个类的多个版本时,它仍然只显示一个小行星

Main

int lrgAsteroids = 4;
Asteroid[] asteroid = new Asteroid[lrgAsteroids];

void setup() {
  size(800,800);
  for (int i = 0; i < lrgAsteroids; i++) {
      asteroid[i] = new Asteroid();
      asteroid[i].display();
    }
}

void draw() {
  background(0);
  asteroid[0].move();
  asteroid[1].move();
  for (int i = 0; i < lrgAsteroids; i++) {
    asteroid[i].move();
  }
}
int-lrgAsteroids=4;
小行星[]小行星=新小行星[lrgAsteroids];
无效设置(){
尺寸(800800);
对于(int i=0;i
小行星等级。

class Asteroid {
  PImage lrgAsteroid;
  float xpos, ypos;
  float yDirection;
  float xDirection;
  float radians = 0;


  Asteroid() {
    lrgAsteroid = loadImage("largeAsteroid.png");
    xpos = random(0,710);
    ypos = random(0,710);

    int xDir = (int) random(2);
    int yDir = (int) random(2);

    if (xDir == 1) {
      xDirection = 1;
    } else if (xDir == 0) {
      xDirection = -1;
    }

    if (yDir == 1) {
      yDirection = 1;
    } else if (yDir == 0) {
      yDirection = -1;
    }
  }

  void display() {
    image(lrgAsteroid, xpos, ypos);
  }

  void move() {    
     background(0);
     pushMatrix();
     imageMode(CENTER);
     translate(xpos, ypos);
     rotate(radians);
     image(lrgAsteroid, 0, 0);
     popMatrix();

     if (xpos <= 0) {
       xpos = random(750,800);
     } else if (xpos >= 800) {
       xpos = random(0,100);
     }

     if (ypos <= 0) {
       ypos = random(750,800);
     } else if (ypos >= 800) {
       ypos = random(0,100);
     }

     radians += 0.02;
     xpos += xDirection;
     ypos += yDirection;
  }

}
class小行星{
PImage lrgAsteroid;
浮动XPO、YPO;
浮动方向;
浮动方向;
浮动弧度=0;
小行星(){
lrgAsteroid=loadImage(“largeAsteroid.png”);
xpos=随机(0710);
ypos=随机(0710);
int-xDir=(int)随机(2);
int-yDir=(int)随机(2);
如果(xDir==1){
xDirection=1;
}else if(xDir==0){
xDirection=-1;
}
如果(yDir==1){
y方向=1;
}else if(yDir==0){
y方向=-1;
}
}
无效显示(){
图像(lrgAsteroid、xpos、ypos);
}
无效移动(){
背景(0);
pushMatrix();
图像模式(中心);
翻译(XPO、YPO);
旋转(弧度);
图像(lrgAsteroid,0,0);
popMatrix();
如果(xpos=800){
xpos=随机(0100);
}
如果(ypos=800){
ypos=随机(0100);
}
弧度+=0.02;
xpos+=xDirection;
ypos+=Y方向;
}
}

任何帮助都将不胜感激

我认为您创建的所有实例都得到了相同的xDir和yDir,或者相同的XPO和YPO,您可以打印它以便查看这是否是问题所在吗

void setup() {
size(800,800);
for (int i = 0; i < lrgAsteroids; i++) {
  asteroid[i] = new Asteroid();
  // add these please to see what happens
  System.out.println(asteroid[i].xDirection+" "+asteroid[i].yDirection);

 }
}

void draw() {
 background(0);
 asteroid[0].move();
 asteroid[1].move();
 for (int i = 0; i < lrgAsteroids; i++) {
   asteroid[i].move();
   // add these please to see what happens
   System.out.println(asteroid[i].xpos+" "+asteroid[i].ypos);
 }
void setup(){
尺寸(800800);
对于(int i=0;i
错误非常简单。实际上,在绘制小行星之前,显示是清晰的,因为
背景(0);
方法
move()
。在
draw()开始时清除背景就足够了

从方法
move()
中删除
背景(0);

小行星(){ // [...] 无效移动(){
//背景(0);你是个天才。谢谢