Bouncing Balls, борется с получением более 1 (обработка) - PullRequest
0 голосов
/ 24 ноября 2018

так что я хочу, чтобы 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);
  }
}

1 Ответ

0 голосов
/ 24 ноября 2018

Создайте конструктор в шарах, где вы можете передать начальные координаты 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) );
}

display и move массив шаров в draw:

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

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

Предварительный просмотр (с уменьшением):

...