問題:因此,我創建了一個帶有Window類的程序,該類創建了一個JFrame,並在其上添加了一個來自我的DrawStuff類的JPanel。 DrawStuff類創建一個(應該)在屏幕上彈跳的球,當它碰到JFrame邊界時,改變方向。球移動,但由於某種原因,我的移動方法的checkbounds部分不起作用。任何幫助將不勝感激。我的目標是保持球的界限。從DrawStuff類爲什麼我的move()方法不讓球保持邊界?
代碼:
public class Drawstuff extends JPanel {
private int x = 0;
private int y = 0;
private int dx, dy=0;
public Drawstuff(){
x = 300;
y = 250;
dx = 0;
dy = 0;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
this.setBackground(Color.BLACK);
g2d.setColor(Color.RED);
g2d.fillOval(x,y,50,50);
}
public void move(){
if (x < 600){
dx = 1;
}
if (y < 500){
dy = 1;
}
if (x > 600){
dx = -1;
}
if (y >500){
dy = -1;
}
x += dx;
y += dy;
}
}
簡單的 「GameLoop」 從窗口類(如果需要)
while (true){
stuff.repaint();
stuff.move();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
那麼它目前做了什麼?對不起,再次看到我的壞 –
'if(x <600){}'???你不是指'如果(x <0)'?與「y」相同... – FoggyDay
如果x == 600,您只是不動? –