如何生成随机位置对象

时间:2019-03-08 16:46:55

标签: processing

我正在尝试在1500-1000个空间中生成15个圆,每个圆具有不同的位置。我知道如何生成1个随机圆,仅此而已。我该怎么办?

2 个答案:

答案 0 :(得分:0)

听起来您正在寻找for循环:

for(int i = 0; i < 15; i++){
  // draw a random circle here
}

无耻的自我促进:here是有关for处理中循环的教程。

答案 1 :(得分:0)

基本上,您需要创建一个Circle类和包含所有圈子的ArrayList。 然后使用for在列表中添加15个圆,这些圆将传递给构造函数随机坐标,并确定固定的宽度和高度。

class Circle {
    float x, y, size;

    public Circle(float x, float y, float size) {
        this.x = x;
        this.y = y;
        this.size = size;
    }

    public void update() {
        ellipse(x, y, size, size);
    }
}

全局声明您的ArrayList。现在,在setup()中实例化ArrayList并使用随机生成的坐标填充它

ArrayList<Circle> circlesList; // This needs to be declared globally
float circleSize = 64; // Circles size in pixels

void setup() {
    size(1500, 1000);

    circlesList = new ArrayList<Circle>();

    // Populating the ArrayList with circles
    for (int i = 0; i < 15; i++) {
        float randomx = random(0, 1500); // Random generated X
        float randomy = random(0, 1000); // Random generated Y
        Circle newCircle = new Circle(randomx, randomy, circleSize);

        circlesList.add(newCircle);
    }
}

现在在draw()函数中,使用foreach循环,您将在ArrayList内绘制每个圆圈

void draw() {
    background(255); // Background color

    fill(255, 0, 0); // Circle fill color
    for (Circle c : circlesList) {
        c.update();
    }
}

请注意,这样您的圈子可能会重叠或在屏幕外一点。询问任何代码是否不清楚,不要只是将其复制粘贴。

希望这有帮助:)