我正在嘗試按照教程here。試圖瞭解代碼的邏輯:
我具備的功能moveBall()
這是一個精簡版:
if (x + xa > getWidth() - 30) { xa = -1; y = y + 10; } if (x + xa < 0) { xa = 1; } x = x + xa;
理想的觸摸屏幕的邊界球需要扭轉方向,這是真的後,它確實發生。但是,如果我把System.out.println("in if")
放在if
的任何一個條件中,每次在球接觸到邊界之前都會被調用,理想情況下xa
的值應該在接觸邊界時只設置一次,或者我錯了嗎?我不可能獲得完整的邏輯,任何人都可以請幫忙嗎?
主要功能:
public static void main(String[] args) throws InterruptedException{
JFrame frame = new JFrame("Mini Tennis");
FirstClass Fr = new FirstClass();
frame.add(Fr);
frame.setSize(300, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while(true){
Fr.moveBall(); // executes the last
Fr.repaint(); //executes first
Thread.sleep(10); //executes second
}
}
您是否嘗試在* * * if'子句中添加*不同*調試輸出? –
是的,但它只是讓我更困惑,部分原因是操作很快進行。 – User3
關閉主題,但我會殺了誰寫的代碼... –