首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ArrayList处理Boid示例中删除元素

从ArrayList处理Boid示例中删除元素
EN

Stack Overflow用户
提问于 2016-01-20 13:17:14
回答 1查看 88关注 0票数 0
  • 得到了这个BOID应用程序正在处理的一些指导算法。

  • 每种颜色的boid都存储在两个单独的ArrayLists中。
  • 红色的食肉动物(捕食者)具有追逐功能: 类生物{ int对象= 1;PVector追赶(ArrayList boids) { PVector转向=新的PVector();如果(PVector< boids.size()) {生物boid =(生物)boids.get(猎物);

这个函数使红色的boid站在目标白色boid的顶部。

,问题是,当所有的红色机器人都在上面的时候,这个白色的机器人就会消失。(如上图所示)

我可以添加一个新的boid或捕食者,但我不能删除?:

代码语言:javascript
复制
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?
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 14:18:12

你发布的代码毫无意义。您想要删除现有的 Boid,那么为什么要创建一个新的Boid然后立即删除它呢?

您还没有发布MCVE,所以我只能从一般意义上回答,但是下面是您需要做的事情:

步骤1:重构您的代码,使其更有意义。如果有必要,请对每一行进行注释,以确保您确切地知道代码正在做什么。但是,您不应该这样做,比如添加一个新的Boid,然后在下一行中删除它。将您的问题分解成更小的步骤,并确保每个步骤在尝试将其与其他功能混合之前完全独立工作。

步骤2:创建一个接受单个white BoidList of red Boids的函数,如果应该删除white Boid,则返回true。在一个独立的示例草图中使用硬编码的值来测试这个函数。

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

如果你被困在这些步骤中的一个,然后发布一个MCVE和一个特定的问题,然后我们将从那里开始。很难回答一般的“我怎么做这个”类型的问题,但是回答特定的问题要容易得多,我尝试了X,预期的Y,但得到Z类型的问题--特别是如果我们有一个MCVE,我们实际上可以在我们自己的机器上运行,而不是一些断开的片段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34901135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档