2011-07-23 8 views
0

私は、スタートボタンを押すとJWindowの壁から跳ね返る行(移動するけれども画面は掃除しないで楕円形にする)を作成するプログラムを作成しています。私は3つのファイルを持っています:メインメソッドを持つメインのもの、ounceThreadFrameコードを持つもの、ボールコードを持つ最後のものです。それはすべての作品、画面の左側にバウンスdosen'tを除いて動作します。それはどのように左の跳ねるようにそれを変更する必要がありますか?残りのコードが必要な場合はお知らせください。以下のコードは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;

です。それは単にタイプミスです。常に起こります。

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

二回xを設定し、dxを変更していない:

4

これが問題です。他のすべてのブロックでは、位置を変更してから方向を反転します。あなたが望むと思う:

if (x < 0) { 
    x = 0; 
    dx = -dx; 
} 
関連する問題