2016-11-04 1 views
0

Я пытаюсь переместить снаряд каждые 10 миллисекунд, используя цикл анимации в отдельном классе. Первые две итерации этого цикла печатают, что сила тяжести равна 0, когда она должна только иметь возможность нуля в первом цикле с момента времени = 0 в начале.Java: Двойной не вычисляется внутри цикла

public static void move() 
    { 
     System.out.println("Time: " + time); 
     System.out.println("gravity: " + gravity); 
     System.out.println("g: " + g); 
     dX = Slingshot.getPullX(); 
     dY = Slingshot.getPullY(); 
     gravity = 0.5 * g * time * time; 
     newX = (double) Slingshot.getStart().x + time * c * dX; 
     newY = (double) Slingshot.getStart().y + (time * c * dY + gravity); 
     time = time + 1; 

     new Projectile(newX, newY, dX, dY); 
     trail = new Ellipse((int) newX + 5, (int) newY + 5); 
     trail.setColor(Color.RED); 
     trail.setSize(2, 2); 
     projectileTrail.add(trail); 
    } 

Вот результат после нескольких итераций цикла:

Time: 0.0 
gravity: 0.0 
g: 2.0 
Time: 1.0 
gravity: 0.0 
g: 2.0 
Time: 2.0 
gravity: 1.0 
g: 2.0 
Time: 3.0 
gravity: 4.0 
g: 2.0 
Time: 4.0 
gravity: 9.0 
g: 2.0 
Time: 5.0 
gravity: 16.0 
g: 2.0 
+0

Так же, как tipp: Эта строка 'new Projectile (newX, newY, dX, dY);' скорее всего ничего не делает. Вы создаете снаряд, и поскольку вы ничего не делаете с ним, это будет только сбор мусора. –

ответ

3

Вы печатаете результаты, прежде чем вы рассчитали их, таким образом, второй цикл показывает, что вы рассчитывали в первом.

Просто переместите println s в конец цикла.

+0

Спасибо, я печатал значения, чтобы попытаться выяснить, в чем была моя ошибка, поэтому я думал, что сила тяжести равна нулю, вызывая мою ошибку. Похоже, это где-то еще! – Andrew

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