宿題のウィンドウ内でボールを連続的にバウンドさせるプログラムを作成しようとしています。これは、私がやろうとしていることの短いYouTubeビデオです。プログラムは現在書かれているため、ボールが動かず、その理由がわかりません。
2 つの質問があります。
- ボールが動かない理由は何ですか?
- IF (条件) 内で使用した > および < 演算子の代わりに >= および <= 演算子を使用する必要がありますか?
import acm.program.*;
import acm.graphics.*;
publc class BallBouncing extends GraphicsProgram{
public void run(){
GOval ball = new GOval(getWidth() / 2, getHeight() / 2, OVAL_SIZE, OVAL_SIZE);
ball.setFilled(true);
add(ball);
double dx = getWidth() / N_STEPS;
double dy = getHeight() / N_STEPS;
while(true){
ball.move(dx, dy);
pause(PAUSE_TIME);
if (ball.getY() > getHeight() - OVAL_SIZE) { dy = dy * -1;}
if (ball.getX() > getWidth() - OVAL_SIZE) { dx = dx * -1;}
if (ball.getY() < 0 + OVAL_SIZE) { dy = dy * -1;}
if (ball.getX() < 0 + OVAL_SIZE) { dx = dx * -1;}
}
}
private static final int STEPS = 1000;
private static final int PAUSE_TIME = 5;
private static final int OVAL_SIZE = 25;
}