2011-07-23 95 views
0

我正在制作一个程序(在java中),当你按下一个开始按钮时,它会产生一条从JWindow墙壁弹开的线条(通过制作一个移动但不清洁屏幕的椭圆形成的线条)。我有三个文件:一个是main方法,另一个是带有盎司线程代码,最后一个是球码。这一切都是有效的,除了不会从屏幕左侧反弹的线路。我应该如何改变它,使其左侧反弹?让我知道你是否需要其余的代码。以下代码是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

问题是与陈述x= dx;

我想你知道它应该意味着。这只是一个错字。随时都会发生。

4

这就是问题所在:

if (x<0){ 
    x=0; 
    x= dx; 
} 

这是设置x两次,并没有改变dx。在其他区块中,您将改变位置,然后反转方向。我怀疑你想要:

if (x < 0) { 
    x = 0; 
    dx = -dx; 
}