使用 Python 和 PyGame 遊戲製作入門教學
前言
隨著天氣越來越冷,很多人卻納悶蚊子為何不減反增。身為一個工程師若沒辦法成功在現實社會和蚊子好好相處,只好做打蚊子遊戲調劑身心(咦)。本文將透過一個打蚊子遊戲,帶領讀者學習如何使用 Python 的 PyGame 模組製作一個簡單的打蚊子遊戲,在學習遊戲開發的基本觀念的同時,也讓我們在虛擬社會中可以彌補現實社會中的遺憾(喂)。好啦,就讓我們開始 PyGame 遊戲開發之旅吧!
PyGame 初體驗
PyGame 是一種 Python 用來製作遊戲的模組,它能讓開發者可以用更簡單的方式加入文字、圖案、聲音等元素並進行事件處理來開發遊戲。我們可以看到 PyGame 官方網站上有許多有趣的網友製作的有趣遊戲。
首先,我們先來進行環境設定,先確保你的作業系統有安裝 Python3,我們這邊使用的是 MacOS 作業系統。然後安裝我們的 pygame 模組。
1 | $ pip install pygame |
在開始 PyGame Hello World 之前我們先來認識 PyGame 幾大核心元素:
pygame.Surface
:Surface 資料型別,代表一個矩形的影像,用來繪製在螢幕上pygame.Rect
:Rect 資料型別,用來定位矩形空間的位置和可以用來偵測物件是否碰撞的pygame.event
:事件模組,用來處理使用者觸發事件,包含自定義事件pygame.font
:文字模組,用來顯示文字,可用來顯示儀表板資料pygame.draw
:繪圖模組,可以畫出多邊形圖形,可當作背景物件pygame.image
:圖片模組,用來處理載入圖片等相關操作,可當作角色精靈(sprite)pygame.time
:時間模組,包含控制遊戲迴圈迭代速率,確保反饋不會太快消逝
接著我們直接使用 PyGame 製作一個 hello world 畫面,這樣讀者可以更清楚整個設計的架構:
1 | import sys |
成果如下:
開始製作打蚊子小遊戲
在開始正式製作我們的遊戲前我們先來看個遊戲成果動畫:
通常我們在設計遊戲之前我們會定義一下遊戲規則,而我們的打蚊子遊戲規則十分簡單,就是打蚊子
,打到一隻加五分,遊戲不會結束(喂)。以下定義一下會用到的核心設計:
- 左上方設有遊戲儀表板顯示目前分數
- 中間畫面有一隻大蚊子每 3 秒會換位置
- 當打到蚊子時會加五分,顯示
hit!!
在左上
建立 Mosquito
類別(繼承 pygame.sprite.Sprite
),讓我們可以生產蚊子物件(由於我們需要判斷是否使用者的滑鼠有點擊到物件,所以需要透過 rect
來定位):
1 | class Mosquito(pygame.sprite.Sprite): |
事件迴圈(其中我們主要偵測 MOUSEBUTTONDOWN
和 reload_mosquito_event
自定義事件):
1 | while True: |
隨機產生位置:
1 | def get_random_position(widow_width, window_height, image_width, image_height): |
完整程式碼如下:
1 | import sys, time |
總結
以上就透過一個簡單的打蚊子遊戲來介紹 PyGame 遊戲開發的流程,其中包含了遊戲背景、物件製作以及事件處理等。這個遊戲主要為 demo 使用,尚有很多需要還需要調整改進的地方。相信讀者在學會了相關概念後也迫不及待的想要製作屬於自己的遊戲了吧!或許讀者也可以在下課下班後自己來製作打蟑螂遊戲來調劑身心。我們下回見囉!
參考文件
關於作者:
@kdchang 文藝型開發者,夢想是做出人們想用的產品和辦一所心目中理想的學校。A Starter & Maker. JavaScript, Python & Arduino/Android lover.:)
留言討論