Python Pygame 兒童遊戲程式入門教學:從 Scratch 畢業後的第一個 Python 遊戲專案
你家的孩子在 Scratch 上做了好幾個專案,開始覺得積木程式有點「不夠用」了嗎?恭喜,這代表他準備好進入真正的程式語言了!Python 是從 Scratch 畢業後最棒的下一步,而 Pygame 則是用 Python 做遊戲最友善的入門框架。
為什麼選 Python 和 Pygame?
很多家長會問:「為什麼不直接學 Unity?」說實話,Unity 對剛從 Scratch 畢業的孩子來說太複雜了。Python 的語法接近英文,比較容易理解,而 Pygame 的概念跟 Scratch 有很多相似的地方:
- Scratch 的「角色」→ Pygame 的
Sprite - Scratch 的「舞台」→ Pygame 的
Surface - Scratch 的「重複執行」→ Pygame 的遊戲迴圈
- Scratch 的「碰到邊緣就反彈」→ Pygame 的碰撞偵測
這種概念的延續性讓孩子不會覺得一切要重新來過。
Step 1:安裝 Python 和 Pygame
首先要安裝 Python。請到 python.org 下載最新版(建議 3.11 以上),安裝時記得勾選「Add Python to PATH」,這點很重要!
安裝好 Python 後,打開命令提示字元(Windows)或終端機(Mac),輸入:
pip install pygame等它跑完,再輸入這個來確認安裝成功:
python -c "import pygame; print(pygame.ver)"看到版本號就代表一切就緒了!如果孩子想要更簡單的開發環境,也可以用 Thonny 這個 IDE,它是專門為初學者設計的。
Step 2:建立第一個遊戲視窗
現在來寫第一個程式。打開你的編輯器,新建一個 game.py 檔案:
import pygame
import sys
# 初始化 Pygame
pygame.init()
# 設定視窗大小
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("我的第一個遊戲")
# 遊戲主迴圈
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 填滿背景色
screen.fill((135, 206, 235)) # 天空藍
# 更新畫面
pygame.display.flip()跑起來你會看到一個天空藍色的視窗。跟孩子說:「這就是你的遊戲舞台!」他一定會很興奮。
Step 3:畫一個玩家角色
在 Scratch 裡你可以選角色,在 Pygame 裡我們先用簡單的圖形來當角色:
# 玩家設定
player_x = 400
player_y = 500
player_width = 80
player_height = 20
player_speed = 5
# 在遊戲迴圈中畫出玩家
pygame.draw.rect(screen, (0, 100, 200),
(player_x, player_y, player_width, player_height))如果你的孩子之前有玩過 Roblox Studio Lua 入門教學 裡的 3D 遊戲,可以告訴他:「我們現在做的是 2D 版本,概念是一樣的!」
Step 4:加入鍵盤控制
遊戲的核心就是互動。讓玩家可以用左右鍵控制角色移動:
# 在遊戲迴圈中加入鍵盤偵測
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < 800 - player_width:
player_x += player_speed注意到了嗎?我們加了邊界檢查(player_x > 0 和 player_x < 800 - player_width),這樣角色就不會跑出畫面。這個概念跟 Scratch 的「碰到邊緣就反彈」很像。
Step 5:加入掉落的球
現在來加入遊戲的核心機制——從上方掉下來的球:
import random
# 球的設定
ball_x = random.randint(0, 770)
ball_y = 0
ball_size = 30
ball_speed = 3
# 在遊戲迴圈中更新球的位置
ball_y += ball_speed
# 如果球掉出畫面就重新產生
if ball_y > 600:
ball_y = 0
ball_x = random.randint(0, 770)
# 畫球
pygame.draw.circle(screen, (255, 100, 100),
(ball_x + ball_size // 2, ball_y + ball_size // 2), ball_size // 2)Step 6:碰撞偵測與計分
用 Pygame 的 Rect 來做碰撞偵測,這是遊戲開發最基本的技巧:
# 建立碰撞區域
player_rect = pygame.Rect(player_x, player_y, player_width, player_height)
ball_rect = pygame.Rect(ball_x, ball_y, ball_size, ball_size)
score = 0
# 檢查碰撞
if player_rect.colliderect(ball_rect):
score += 1
ball_y = 0
ball_x = random.randint(0, 770)
ball_speed += 0.2 # 每接到一顆球就加速
# 顯示分數
font = pygame.font.Font(None, 36)
score_text = font.render(f"Score: {score}", True, (255, 255, 255))
screen.blit(score_text, (10, 10))每接到一顆球就加速,這樣遊戲就會越來越刺激。我自己的經驗是,孩子看到分數跳動的時候都會超級投入。
Step 7:加入遊戲結束條件
一個完整的遊戲需要有結束條件。我們可以設定「錯過 3 顆球就遊戲結束」:
lives = 3
# 如果球掉出畫面
if ball_y > 600:
lives -= 1
ball_y = 0
ball_x = random.randint(0, 770)
if lives <= 0:
# 遊戲結束
game_over = True遊戲結束時可以顯示最終分數和「再玩一次」的提示。如果孩子想學更多硬體互動的程式,也可以試試 micro:bit 兒童程式教學,把程式跟實體世界連結起來。
延伸挑戰:讓遊戲更好玩
完成基本版之後,可以鼓勵孩子自己加入新功能。以下是一些適合的延伸挑戰:
- 加入音效(
pygame.mixer.Sound) - 用圖片取代簡單的圖形
- 加入不同種類的掉落物(有些加分、有些扣分)
- 加入難度等級
- 記錄最高分
這些挑戰可以讓孩子持續有成就感,同時學到更多程式概念。
Scratch vs Pygame 概念對照表
| Scratch 概念 | Pygame 對應 |
|---|---|
| 綠旗被點擊 | pygame.init() + 遊戲迴圈 |
| 移動 10 步 | 修改 x, y 座標 |
| 碰到角色 | colliderect() |
| 等待 1 秒 | pygame.time.Clock().tick(60) |
| 說「你好」 | font.render() + blit() |
如果孩子想用 Scratch 做更進階的 AI 專案,也可以看看 Scratch AI 影像辨識遊戲教學。
給家長的建議
最後提醒家長幾點:別急著要求孩子寫出完美的程式碼,讓他享受「東西動起來」的樂趣最重要。錯誤和 bug 是學習的一部分,不要因為程式跑不動就替他解決,引導他自己找出問題才是最有價值的學習。Python 和 Pygame 是一個很好的起點,祝你的孩子在程式的世界裡玩得開心!
繼續閱讀
Roblox Studio 兒童遊戲開發入門教學:用 Lua 程式打造你的第一個 3D 遊戲
相關文章
你可能也喜歡
探索其他領域的精選好文