讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 第18章 >

第18章

測試題

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。