ボールが壁に当たったときに跳ね返る単純なゲームをプログラミングしています。GUI には JavaFX を、描画には Canvas と GraphicsContext を使用しました。
ボールを描画するための私のコード:
public void moving(){
gc.setFill(Color.BLACK);
gc.fillOval(ball.getCenterX()-15, ball.getCenterY()-15, 30,30);
if (ball.getCenterX()<285 && ball.getCenterX()>15) {
double xtemp = ball.getCenterX()+vektorx;
ball.setCenterX(xtemp);
} else {
vektorx = -vektorx;
double xtemp = ball.getCenterX()+vektorx;
ball.setCenterX(xtemp);
}
if (ball.getCenterY()<485 && ball.getCenterY()>15) {
double ytemp = ball.getCenterY()+vektory;
ball.setCenterY(ytemp);
} else {
vektory = -vektory;
double ytemp = ball.getCenterY()+vektory;
ball.setCenterY(ytemp);
}
gc.setFill(Color.AQUA);
gc.fillOval(ball.getCenterX()-15, ball.getCenterY()-15, 30,30);
}
gc
私が使用した GraphicsContextであることに注意してください。すべてが想定どおりに機能しますが、気になる点が 1 つだけあります。
ボールが通ってきた道の跡が残り、とても気になります。コードを 1 回実行してみました (もう一度青と黒で描画します)。痕跡は残りませんが、スレッドに配置して実行すると、このようなことが起こります。