2011-07-23 92 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; 
}