球不再在BallWallBounce中移动(Java Ex4.15的艺术与科学)
摘自Java艺术与科学第4章,练习15。我想写一个程序,使一个球在窗口内从边到边反弹 这是我的密码:球不再在BallWallBounce中移动(Java Ex4.15的艺术与科学),java,Java,摘自Java艺术与科学第4章,练习15。我想写一个程序,使一个球在窗口内从边到边反弹 这是我的密码: import acm.graphics.*; import acm.program.*; import java.awt.*; public class BouncingBall extends GraphicsProgram { private static final int N_STEPS=1000; private static final int PAUSE_TIME = 2; p
import acm.graphics.*;
import acm.program.*;
import java.awt.*;
public class BouncingBall extends GraphicsProgram {
private static final int N_STEPS=1000;
private static final int PAUSE_TIME = 2;
private static final double ovalsize =50;
public void run(){
GOval oval = new GOval(getWidth()/2-ovalsize/2,getHeight()/2-ovalsize/2, ovalsize, ovalsize);
//positions the ball's start position at the center of the window
oval.setFilled(true);
add (oval);
double dx=((getWidth()-ovalsize)/4)/N_STEPS;
double dy=((getHeight()-ovalsize)/2)/N_STEPS;
while(true) {
oval.move(dx, dy); //indicates the oval moving
pause(PAUSE_TIME);
if (oval.getY() > getHeight() - ovalsize) {//code indicates if ball encounters any edge
//of the screen, it will change direction.
dy*=-1;
}
if(oval.getX() > getWidth()- ovalsize) {
dx*=-1;
}
if(oval.getY() < 0) {
dy*=dy-1;
}
if(oval.getX() < 0) {
dx*=-1;
}
}
}
到
(这是来自其他网页的代码),球不再移动
有人能告诉我发生了什么事吗
编辑:我回去测试程序,似乎代码中还有另一个问题可能与此相关。当我启动应用程序时,球将正常移动。然后它会移动得越来越快,大约62秒后,球会飞出,只在窗口的顶部边缘来回移动
double dx=((getWidth()-ovalsize)/4)/N_STEPS;
double dy=((getHeight()-ovalsize)/2)/N_STEPS;
double dx = (getWidth()/N_STEPS);
double dy = (getWidth()/N_STEPS);