处理/ Java-类数组出现问题

问题描述 投票:0回答:1

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

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();
  }
}

小行星分类。

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;
  }

}

任何帮助将不胜感激。

java arrays class object processing
1个回答
0
投票

我认为您创建的所有实例都具有相同的xDir和yDir或相同的xpos和ypos,您可以将其打印出来,以便查看是否存在问题吗?

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);
  System.out.println(asteroid[i].xpos+" "+asteroid[i].ypos);
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.