測試題
1. 程序可以響應的兩種事件分別是鍵盤事件和鼠標事件。
2. 處理事件的代碼稱為事件處理器。
3. Pygame 使用 KEYDOWN
事件來檢測按鍵是否按下。
4. pos
屬性會指出事件發生時鼠標所在的位置。
5. 要為用戶事件得到下一個可用的事件編號,可以使用 pygame.NUMEVENTS
。
6. 要創建一個定時器,可以使用 pygame.time.set_timer
。
7. 要在 Pygame 窗口中顯示文本,可以使用 font
對象。
8. 使用字體對像有 3 個步驟:
創建一個字體對像;
渲染文本,創建一個表面;
把這個表面塊移到顯示表面。
動手試一試
1. 如果球沒有碰到球拍的頂邊,而是碰到了球拍的左右兩邊,為什麼會有奇怪的表現?這是因為這裡有一個碰撞,所以代碼嘗試讓球的 y 方向反向(讓它向上而不是向下)。但是因為球是從兩邊(左邊或右邊)過來的,即使在反向之後它仍會與球拍「碰撞」。下一次循環(一幀之後)時,它會再次反向,因此會再次向下,如此繼續。要解決這個問題,有一種簡單的方法:當球與球拍碰撞時總是將球設置為向「上」(y 速度是一個負值)。這不能算是一種完美的解決辦法,因為這意味著即使球碰到球拍左右兩邊也會向上反彈——這可不太真實!不過這樣能解決球在球拍兩邊來回反彈的問題。如果你想要一種更真實的解決方案,可能需要多寫一些代碼。也許要增加一些內容,在「反彈」之前檢查球碰到了球拍的哪一邊。
2. 我們已經在網站上給出了有關代碼的一個例子,可以為程序增加隨機性,見 TIO_CH18_2.py。