- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在修改一个项目的植绒模拟。添加对象没问题,但是当我尝试删除对象时,我在第 240 行收到“函数 size() 不存在”错误。问题可能出在 AdjSize() 和 subBoid() 中,但我不知道是什么原因造成的。我已经稍微简化了代码,所以它只是 ArrayList 植绒的东西。
Flock flock;
float k, l;
int previous = 0;
int test = 0;
void setup()
{
size(1920, 1080);
flock = new Flock();
for (int i = 0; i < 150; i++)
{
flock.addBoid(new Boid(width/2,height/2));
}
}
void draw()
{
background(0);
flock.run();
flock.AdjSize();
}
// The Boid class
class Boid
{
PVector location;
PVector velocity;
PVector acceleration;
float r;
float maxforce; // Maximum steering force
float maxspeed; // Maximum speed
Boid(float x, float y)
{
acceleration = new PVector(0, 0);
float angle = random(TWO_PI);
velocity = new PVector(cos(angle), sin(angle));
location = new PVector(x, y);
r = 2.0;
maxspeed = 2;
maxforce = 0.03;
}
void run(ArrayList<Boid> boids)
{
flock(boids);
update();
borders();
render();
}
void applyForce(PVector force)
{
acceleration.add(force);
}
void flock(ArrayList<Boid> boids)
{
PVector sep = separate(boids); // Separation
PVector ali = align(boids); // Alignment
PVector coh = cohesion(boids); // Cohesion
sep.mult(1.5);
ali.mult(1.0);
coh.mult(1.0);
applyForce(sep);
applyForce(ali);
applyForce(coh);
}
// Method to update location
void update()
{
// Update velocity
velocity.add(acceleration);
// Limit speed
velocity.limit(maxspeed);
location.add(velocity);
// Reset accelertion to 0 each cycle
acceleration.mult(0);
}
PVector seek(PVector target)
{
PVector desired = PVector.sub(target, location);
desired.normalize();
desired.mult(maxspeed);
PVector steer = PVector.sub(desired, velocity);
steer.limit(maxforce); // Limit to maximum steering force
return steer;
}
void render()
{
float theta = velocity.heading2D() + radians(90);
fill(255, 255,255);
stroke(255);
pushMatrix();
translate(location.x, location.y);
rotate(theta);
beginShape();
vertex(r*15, r*17); //Left wing tip
vertex(r*25, r*10); //Left wing top point
vertex(r*30, r*13); //middle divit
vertex(r*35, r*10); //right wing top point
vertex(r*45, r*17); //right wing tip
vertex(r*30, r*13); //underswoop
endShape(CLOSE);
popMatrix();
}
void borders()
{
if (location.x < -r) location.x = width+r;
if (location.y < -r) location.y = height+r;
if (location.x > width+r) location.x = -r;
if (location.y > height+r) location.y = -r;
}
PVector separate (ArrayList<Boid> boids) {
float desiredseparation = 25.0f;
PVector steer = new PVector(0, 0, 0);
int count = 0;
for (Boid other : boids)
{
float d = PVector.dist(location, other.location);
if ((d > 0) && (d < desiredseparation))
{
PVector diff = PVector.sub(location, other.location);
diff.normalize();
diff.div(d); // Weight by distance
steer.add(diff);
count++; // Keep track of how many
}
}
if (count > 0)
{
steer.div((float)count);
}
if (steer.mag() > 0)
{
steer.normalize();
steer.mult(maxspeed);
steer.sub(velocity);
steer.limit(maxforce);
}
return steer;
}
// Alignment
PVector align (ArrayList<Boid> boids)
{
float neighbordist = 50;
PVector sum = new PVector(0, 0);
int count = 0;
for (Boid other : boids)
{
float d = PVector.dist(location, other.location);
if ((d > 0) && (d < neighbordist))
{
sum.add(other.velocity);
count++;
}
}
if (count > 0)
{
sum.div((float)count);
sum.normalize();
sum.mult(maxspeed);
PVector steer = PVector.sub(sum, velocity);
steer.limit(maxforce);
return steer;
}
else
{
return new PVector(0, 0);
}
}
PVector cohesion (ArrayList<Boid> boids) {
float neighbordist = 50;
PVector sum = new PVector(0, 0);
int count = 0;
for (Boid other : boids)
{
float d = PVector.dist(location, other.location);
if ((d > 0) && (d < neighbordist))
{
sum.add(other.location); // Add location
count++;
}
}
if (count > 0)
{
sum.div(count);
return seek(sum); // Steer towards the location
}
else
{
return new PVector(0, 0);
}
}
}
class Flock
{
ArrayList<Boid> boids; // An ArrayList for all the boids
Flock()
{
boids = new ArrayList<Boid>(); // Initialize the ArrayList
}
void run()
{
for (Boid b : boids)
{
b.run(boids);
}
}
void AdjSize()
{
if(test == 0)
{
flock.addBoid(new Boid(width/2,height/2));
test = 1;
}
else
{
flock.subBoid(flock.size() - 1);
}
}
void addBoid(Boid b)
{
boids.add(b);
}
void subBoid(Boid b)
{
boids.remove(b);
}
}
最佳答案
您是在 Flock 对象上调用 size()
,而不是在 ArrayList 上。如果你想让 Flock 有一个可调用的 size()
方法,你必须先给它一个。例如,
class Flock {
// ....
public int size() {
return boids.size();
}
}
关于java - 在 ArrayList 中获取 "size() does not exist"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21177382/
将一个数组列表分配给另一个数组列表与在两个数组列表之间使用 addAll 方法有什么区别? 1 > arrayList = arrayList;//应该将后面的arrayList的值分配给第一个。 2
所以我在将 ArrayList 添加到我的 ArrayList 时遇到了一些问题。将其想象成一张 table 。 下面是一些示例代码: ArrayList currentRow = new Arra
我一直在尝试转换 ArrayList> to ArrayList> 的字符串 这是我尝试构建的代码。 public void convertString (ArrayList> templist) {
我有一个 ArrayList (alal) 和一个 ArrayList(al) 的 ArrayList。我想将 al 插入 alal,但我希望 alal.get(0) 包含 al 拥有的所有内容以及添
很抱歉标题太长,如果您能想到更好的标题,请告诉我! 我正在做的是尝试创建一个 ArrayList 的 ArrayList 并将 ArrayList 逐个添加到其中。两个AL>我所拥有的称为三角形和正方
我有带有值的 mList2。存在具有相同 id 的值。如何获取具有相同 id 的对象分组的 List 或 ArrayList 并将其添加到 ArrayList>? List mList2 = list
我正在创建一个 ArrayList的 ArrayList并添加 ArrayLists给它。但每次我对 ArrayList 进行更改时, 它反射(reflect)在 ArrayList 中. 示例: L
谁能解释一下ArrayList之间的区别是什么? , ArrayList和 ArrayList是什么时候使用它们?它们在实现层面上是相同的还是各自具有不同的含义? 最佳答案 ArrayList 特别是
这个问题在这里已经有了答案: Java generics: List> = new LinkedList>() is prohibited? (3 个答案) 关闭 9 年前。 为什么这段代码可以编译
我的 arraylistS 在覆盖数组列表中的行为类似于同一个实例。 我用其中一个来操作 i=0; manupulate((ArrayList)theCoveringRootArrayList.get
我们遇到这个错误 java.lang.NullPointerException at java.util.ArrayList.(Unknown Source) at de.mystuf
据我了解,ArrayList 类继承其父“List”类的 equals() 函数来查找两个成员对象是否相同。这是否意味着“contains()”线性搜索(使用“equal”)来查找 ArrayList
这个问题已经有答案了: What is the diamond operator in Java? (2 个回答) 已关闭 7 年前。 正如标题所说,在Java中,这两种语句有什么区别吗? 通常我都能
我正在尝试求解帕斯卡三角形。我有两个用 Java 编写的代码片段,第一个创建 inner ArrayList 几次并且对我来说效果很好。 但是在代码的第二个版本中,如果我修改 inner ArrayL
正如标题所示,我有两个 ArrayList。奇怪的是,在一个数组列表上设置一个值会改变另一个数组列表的值。 一些信息:这些是 Entry 类型的 ArrayList,每个列表都包含一个金额和一个值(这
我已经添加了一个项目到列表 a,然后添加了列表 a 到列表 b 并再次做了同样的事情。 我的问题是,如果我打印 b.get(0) 和 b.get(1),我会得到相同的列表,这两个项目都是 “一”和“二
我正在创建一个 ArrayList of ArrayList of ArrayList 的 ArrayList 并按以下方式填充它。它正确地填充它。我已经通过调试和 println 弄清楚了这一点。但
实现可以在 Arraylist 和 Integer 中存储任何级别的 ArrayList 的 ArrayList 的最佳方法是什么。 List> list = ArrayList(); 仅允许列表中最
在下面的示例中,我将如何将 ArrayList al4 的内容与其他 ArrayList 中的任何一个进行比较?以同样的方式,我将 al1 与 al2 进行了比较。 import java.util.
好的,所以我之前发布了一个线程,它回答了我的很多问题并帮助我改进了我的代码,但是,我遇到了另一个问题,我不知道为什么,但我认为也许该副本只是指向原始对象..(尽管我已尽力避免这种情况) 在我的游戏代码
我是一名优秀的程序员,十分优秀!