【问题标题】:Bouncing Balls, struggling with getting more than 1 (processing)弹跳球,努力获得超过 1 个(处理)
【发布时间】:2018-11-24 00:29:25
【问题描述】:

所以我想让 10 个球上下弹跳。到目前为止,我已经设法让 1 个球弹起来,并且有类似重力的东西。 但是现在我想添加更多的球,但我无法做到。到目前为止,我尝试添加一个数组,然后使用一个循环,但我尝试过的任何东西都没有为我工作。 如果有人能指出我的解决方案,将不胜感激。

 Ball b; 

 void setup() {               
   size(940, 660);
   b = new Ball();
 }

 void draw() {
   background(50); 
   fill(255);

   b.display();
   b.move();
 }

和班级:

class Ball 
{
  float circleX;
  float circleY;
  float speed;
  float gravity=0.2;

  Ball() {
   speed = 0;
   circleY = 0;
   circleX = 200;
  }

  void move() {
  speed = speed + gravity;  //gravity draufrechnen
  circleY = circleY + speed;  //mit der geschwindigkeit bewegegn
  if (circleY >= height){
    speed = -speed; //andere richtung 
    circleY = height;
    speed = speed*0.9;
  }
 }
  void display() {
    stroke(0);
    fill(127);
    ellipse(circleX, circleY, 50 , 50);
  }
}

【问题讨论】:

  • circleYcircleX 是球的位置吗?如果是这样,当您在设置中创建多个球时,它们都将在彼此之上。您应该修改您的构造函数以至少采用不同的x 值,然后在您的设置中尝试b1 = new Ball(50)b2 = new Ball(200) 等...,然后绘制球。
  • 创建一个至少有 一个 弹跳球的MCVE(正如您的标题所声称的那样),在不知不觉中,您将学习如何制作 50 个弹跳球。跨度>

标签: java arrays object processing


【解决方案1】:

在balls中创建一个构造函数,你可以在其中传递一个ball的初始x和y坐标:

class Ball 
{
    .....    

    Ball(int x, int y) {
       speed = 0;
       circleX = x;
       circleY = y;
    }

    .....  
}

创建一个球数组并在setup函数中对其进行初始化:

int no_of_balls = 10;
Ball[] balls = new Ball[no_of_balls];

void setup() {               

    for (int i=0; i<no_of_balls; ++i) {
        balls[i] = new Ball(80 + i*80, i*5);      
    }

    size(940, 660);
}

可以使用Math.random() 将球初始化为不同的起始高度:

for (int i=0; i<no_of_balls; ++i) {
    balls[i] = new Ball( 80 + i*80, (int)(Math.random()*100.0) );
}

displaymove draw 中的球数组:

void draw() {
    background(50); 
    fill(255);

    for (int i=0; i<no_of_balls; ++i) {
        balls[i].display();
        balls[i].move();
    }
}

预览(缩小):

【讨论】:

    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2013-05-23
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多