2015-09-30 4 views
0

Я начал брать классы Java, поэтому я довольно новичок, и у меня есть задача с «Bouncing balls». Я должен сделать так, чтобы пользователь мог ввести количество шаров, которые он/она хочет увидеть на экране. Я пробовал делать петли, но я абсолютно уверен, что сделал что-то не так, потому что я вижу один мяч. Может ли кто-нибудь дать мне несколько указателей/подсказок/или указать проблему? Спасибо :)Как добавить в программу дополнительные объекты?

Программа:

public class BouncingBall { 
    public static void main(String[] args) { 

     int N = StdIn.readInt(); 
     for(int i=0;i<N;i++){ 
     // set the scale of the coordinate system 
     StdDraw.setXscale(-1.0, 1.0); 
     StdDraw.setYscale(-1.0, 1.0); 

     // initial values 
      double rx = Math.random(); 
      double ry = Math.random(); // position 
      double vx = 0.015, vy = 0.023;  // velocity 
      double radius = 0.05; // radius 

     // main animation loop 
     while (true) { 

      // bounce off wall according to law of elastic collision 
      // for (int i = 0; i < N; i++) { 
      if (Math.abs(rx + vx) > 1.0 - radius) vx = -vx; 
      if (Math.abs(ry + vy) > 1.0 - radius) vy = -vy; 

      // update position 
     // for (int i = 0; i < N; i++) { 
      rx = rx + vx; 
      ry = ry + vy; 

      // clear the background 
      StdDraw.clear(StdDraw.GRAY); 

      // draw ball on the screen 
      // for (int i = 0; i < N; i++) { 
      StdDraw.setPenColor(StdDraw.BLACK); 
      StdDraw.filledCircle(rx, ry, radius); 

      // display and pause for 20 ms 
      // for (int i = 0; i < N; i++) { 
      StdDraw.show(20); 
     } 
    } 
    }  
} 

ответ

0

Я предполагаю, что вы хотите N быть количество шаров здесь. Ваша проблема в том, что цикл в строке 3 охватывает всю программу, включая цикл анимации. Итак, вместо того, чтобы создавать N шаров, вы запускаете свою игру N раз каждый раз за другим.

+0

Ну, я думал, что повторяющаяся программа приведет к появлению большего количества шаров ... –

+0

К сожалению, это не так. Подумайте об этом, если вы хотите играть в футбол с двумя мячами, вы бросаете еще один мяч в игру, вместо того чтобы играть в две 90-минутные игры за другой. – dxdy

+0

Можно ли использовать только для? Или мне нужно другое заявление? Я попытался передвигаться и посмотреть, что он делает в другой ситуации, но я не достиг большего, чем замедление мяча :( –

Смежные вопросы