java - 从 ArrayList Java 处理 Boid 示例中删除元素

标签 java deployment processing

  • 使用一些转向算法让这个 BOID 应用程序进入处理状态。

enter image description here

  • boids 已存储 每种颜色在两个单独的 ArrayList 中。

  • 红体动物(捕食者)有一个 追求功能:

    class Creature {
       int prey = 1;
       PVector pursue(ArrayList boids) {
    
           PVector steer = new PVector();
           if (prey < boids.size()) {
             Creature boid = (Creature) boids.get(prey);
             steer = PVector.sub(boid.location, location);
             steer.mult(maxpursue);
        }
        return steer;
      }
    

此函数使红色主体站在目标白色主体之上。

问题是当所有红色物体都在它上面时,让这个白色物体消失。 (如上图所示)

我可以使用以下内容添加新的 boid 或 predator,但我无法删除?:

void mousePressed() {

   if (mouseButton == LEFT){
      Creature predator = new Creature(mouseX, mouseY, 2); 
      planet.boids.add(predator);
   } else if (mouseButton == RIGHT) {
      Creature boid = new Creature(mouseX, mouseY, 1);
      planet.boids.add(boid);
      planet.boids.remove(boid);  // This line does not work?
   }
}

最佳答案

您发布的代码没有多大意义。您想要删除一个现有 Boid,那么您到底为什么要创建一个新的,然后立即将其删除呢?

您尚未发布MCVE ,所以我只能笼统地回答,但这是你需要做的:

第 1 步:重构您的代码,使其更有意义。如果需要,请对每一行进行注释,以确保您确切地知道代码在做什么。但是您不应该执行诸如添加新的 Boid 然后在下一行中将其删除之类的操作。将您的问题分解为更小的步骤,并确保每个步骤本身都能完美运行,然后再尝试将其与其他功能混合。

第 2 步:创建一个函数,该函数采用单个白色 Boid红色 Boid列表,如果应该删除该 white Boid,则返回 true。使用独立示例草图中的硬编码值自行测试此函数。

第 3 步:迭代您的白色 Boid,并为每个 Boid 调用您在第 2 步中创建的函数。如果该函数返回 true,则删除该白色 Boid。您可能需要在此步骤中使用迭代器

如果您在其中一个步骤上遇到困难,请发布 MCVE连同具体问题,我们将从那里开始。很难回答一般的“我该怎么做”类型的问题,但回答具体的“我尝试了 X,期望 Y,但得到了 Z”类型的问题要容易得多——特别是如果我们有一个 MCVE,我们实际上可以在我们的系统上运行自己的机器,而不是一些断开连接的片段。

关于java - 从 ArrayList Java 处理 Boid 示例中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34901135/

相关文章:

java - 从列表中删除元素会导致 for 循环不增加?

java - 用于 AppWidget 更新的 IntentService 罕见崩溃

node.js - 在 Elastic Beanstalk 上运行 npm install 时出现问题

r - 在生产中部署 R 模型的选项

javascript - 处理可汗学院 vs 处理 2

java - 以编程方式设置 Jetty session cookie 名称

java - EL中bean的动态选择

ruby-on-rails - 将 Rails 引擎安装到生产环境中的多个应用程序的最佳实践

java - 如何修复此 "Cannot reduce the visibility of the inherited method"错误

java - 向 ArrayList 添加元素时出现 NullPointerException