我正在制作一个程序(在java中),当你按下一个开始按钮时,它会形成一条线(通过制作一个移动的椭圆形而不是清洁屏幕而创建)从JWindow墙反弹回来。我有三个文件:一个主要方法,另一个带有ounceThreadFrame代码,最后一个带有球代码。这一切都有效,除了线不会从屏幕的左侧反弹。我应该如何更改它以使其反弹左侧?如果您需要其余代码,请告诉我。以下代码是ball move()方法的代码。
Graphics g=box.getGraphics();
g.fillOval(x, y, xsize, ysize);
x += dx;
y += dy;
Dimension d=box.getSize();
if (x<0){
x=0;
x= dx;
}
if (x+xsize>=d.width){
x=d.width-xsize;
dx= -dx;
}
if (y<0){
y=0;
dy= -dy;
}
if(y+ysize>=d.height){
y=d.height-ysize;
dy= -dy;
}
g.fillOval(x,y,xsize,ysize);
}
答案 0 :(得分:4)
这是问题所在:
if (x<0){
x=0;
x= dx;
}
设置x
两次,而不是更改dx
。在每个其他区块中,您正在改变位置,然后反转方向。我怀疑你想要:
if (x < 0) {
x = 0;
dx = -dx;
}
答案 1 :(得分:0)
问题在于语句x= dx;
我想你知道它应该是什么意思。这只是一个错字。一直发生。