0

ArrayList boid を含むクラス Creature とクラス Food の 2 つのクラスがあります。Boid にはいくつかのパラメーターがあります。

 Creature(float posX, float posY, int t, int bth, int ah) {
    location = new PVector(posX, posY);
    vel = new PVector(random(-5,5), random(-5, 5));
    acc = new PVector();
    type = t;
    if (t == 1) { btype = bth; }
    else { health = bth; }
    if (t == 1) { age = ah; }
    else { hunger = ah; }
    wdelta = 0.0;
    action = 0;
    if (btype == 1) { mass = 5.0; }
    else { mass = 7.0; }
  }

Food クラスには次のメソッドがあります。

  void foodtime(ArrayList boids) {
    for (int i = 0; i < boids.size(); i++) {
      Creature boid = (Creature) boids.get(i);
      float distance = PVector.dist(location, boid.location);
      if (distance < 0.5) {
        bnumadj = i;
        count++;
        if (count == quantity) {
          planet.food.remove(this);
          count = 0;
          bnumadj = -1;
        }
      }
    }
  }

私が達成しようとしているのは、boid が食べ物を「食べる」と、boid タイプ (btype) が 2 から 1 に変わることです。

私は bnumadj 変数を使用して、このメソッドで boid にフィードバックしようとしています:

  void boid(ArrayList boids) {
    for (int i = 0; i < boids.size(); i++) {
      if (i == bnumadj) {
        this.btype = 1;
        bnumadj = -1;
      }
    }
  }

どこが間違っていますか?

4

1 に答える 1