
- Python 基礎
- Python - 首頁
- Python - 概述
- Python - 歷史
- Python - 特性
- Python vs C++
- Python - Hello World 程式
- Python - 應用領域
- Python - 直譯器
- Python - 環境搭建
- Python - 虛擬環境
- Python - 基本語法
- Python - 變數
- Python - 資料型別
- Python - 型別轉換
- Python - Unicode 系統
- Python - 字面量
- Python - 運算子
- Python - 算術運算子
- Python - 比較運算子
- Python - 賦值運算子
- Python - 邏輯運算子
- Python - 位運算子
- Python - 成員運算子
- Python - 身份運算子
- Python - 運算子優先順序
- Python - 註釋
- Python - 使用者輸入
- Python - 數字
- Python - 布林值
- Python 控制語句
- Python - 控制流
- Python - 決策
- Python - if 語句
- Python - if else
- Python - 巢狀 if
- Python - Match-Case 語句
- Python - 迴圈
- Python - for 迴圈
- Python - for-else 迴圈
- Python - while 迴圈
- Python - break 語句
- Python - continue 語句
- Python - pass 語句
- Python - 巢狀迴圈
- Python 函式和模組
- Python - 函式
- Python - 預設引數
- Python - 關鍵字引數
- Python - 僅限關鍵字引數
- Python - 位置引數
- Python - 僅限位置引數
- Python - 可變引數
- Python - 變數作用域
- Python - 函式註解
- Python - 模組
- Python - 內建函式
- Python 字串
- Python - 字串
- Python - 字串切片
- Python - 修改字串
- Python - 字串連線
- Python - 字串格式化
- Python - 跳脫字元
- Python - 字串方法
- Python - 字串練習
- Python 列表
- Python - 列表
- Python - 訪問列表元素
- Python - 修改列表元素
- Python - 新增列表元素
- Python - 刪除列表元素
- Python - 遍歷列表
- Python - 列表推導式
- Python - 排序列表
- Python - 複製列表
- Python - 合併列表
- Python - 列表方法
- Python - 列表練習
- Python 元組
- Python - 元組
- Python - 訪問元組元素
- Python - 更新元組
- Python - 解包元組
- Python - 遍歷元組
- Python - 合併元組
- Python - 元組方法
- Python - 元組練習
- Python 集合
- Python - 集合
- Python - 訪問集合元素
- Python - 新增集合元素
- Python - 刪除集合元素
- Python - 遍歷集合
- Python - 合併集合
- Python - 複製集合
- Python - 集合運算子
- Python - 集合方法
- Python - 集合練習
- Python 字典
- Python - 字典
- Python - 訪問字典元素
- Python - 修改字典元素
- Python - 新增字典元素
- Python - 刪除字典元素
- Python - 字典檢視物件
- Python - 遍歷字典
- Python - 複製字典
- Python - 巢狀字典
- Python - 字典方法
- Python - 字典練習
- Python 陣列
- Python - 陣列
- Python - 訪問陣列元素
- Python - 新增陣列元素
- Python - 刪除陣列元素
- Python - 遍歷陣列
- Python - 複製陣列
- Python - 反轉陣列
- Python - 排序陣列
- Python - 合併陣列
- Python - 陣列方法
- Python - 陣列練習
- Python 檔案處理
- Python - 檔案處理
- Python - 寫入檔案
- Python - 讀取檔案
- Python - 重新命名和刪除檔案
- Python - 目錄
- Python - 檔案方法
- Python - OS 檔案/目錄方法
- Python - OS 路徑方法
- 面向物件程式設計
- Python - OOP 概念
- Python - 類和物件
- Python - 類屬性
- Python - 類方法
- Python - 靜態方法
- Python - 建構函式
- Python - 訪問修飾符
- Python - 繼承
- Python - 多型
- Python - 方法重寫
- Python - 方法過載
- Python - 動態繫結
- Python - 動態型別
- Python - 抽象
- Python - 封裝
- Python - 介面
- Python - 包
- Python - 內部類
- Python - 匿名類和物件
- Python - 單例類
- Python - 包裝類
- Python - 列舉
- Python - 反射
- Python 錯誤和異常
- Python - 語法錯誤
- Python - 異常
- Python - try-except 塊
- Python - try-finally 塊
- Python - 丟擲異常
- Python - 異常鏈
- Python - 巢狀 try 塊
- Python - 使用者自定義異常
- Python - 日誌記錄
- Python - 斷言
- Python - 內建異常
- Python 多執行緒
- Python - 多執行緒
- Python - 執行緒生命週期
- Python - 建立執行緒
- Python - 啟動執行緒
- Python - 加入執行緒
- Python - 執行緒命名
- Python - 執行緒排程
- Python - 執行緒池
- Python - 主執行緒
- Python - 執行緒優先順序
- Python - 守護執行緒
- Python - 執行緒同步
- Python 同步
- Python - 執行緒間通訊
- Python - 執行緒死鎖
- Python - 中斷執行緒
- Python 網路
- Python - 網路
- Python - 套接字程式設計
- Python - URL 處理
- Python - 泛型
- Python 庫
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 雜項
- Python - 日期和時間
- Python - 數學
- Python - 迭代器
- Python - 生成器
- Python - 閉包
- Python - 裝飾器
- Python - 遞迴
- Python - 正則表示式
- Python - PIP
- Python - 資料庫訪問
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 輸出格式化
- Python - 效能測量
- Python - 資料壓縮
- Python - CGI 程式設計
- Python - XML 處理
- Python - GUI 程式設計
- Python - 命令列引數
- Python - 文件字串
- Python - JSON
- Python - 傳送郵件
- Python - 擴充套件
- Python - 工具/實用程式
- Python - GUI
- Python 高階概念
- Python - 抽象基類
- Python - 自定義異常
- Python - 高階函式
- Python - 物件內部
- Python - 記憶體管理
- Python - 元類
- Python - 使用元類進行超程式設計
- Python - 模擬和存根
- Python - 猴子補丁
- Python - 訊號處理
- Python - 型別提示
- Python - 自動化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 協程
- Python - 描述符
- Python - 診斷和修復記憶體洩漏
- Python - 不可變資料結構
- Python 有用資源
- Python - 問答
- Python - 線上測驗
- Python - 快速指南
- Python - 參考
- Python - 速查表
- Python - 專案
- Python - 有用資源
- Python - 討論
- Python 編譯器
- NumPy 編譯器
- Matplotlib 編譯器
- SciPy 編譯器
使用 Pygame 在 Python 中開發 Flappy Bird 遊戲
在 Flappy Bird 遊戲中,玩家透過點選螢幕控制一隻鳥,使其在管道之間飛行,而不碰到它們。在這裡,我們將使用 pygame 庫設計一個 Flappy Bird 遊戲。
使用 pygame 設計 Flappy Bird 遊戲的步驟
1. 安裝 pygame 庫
要安裝 pygame 庫,請使用 PIP 命令。以下是安裝它的命令:
pip install pygame
2. 匯入庫
您需要使用 import 語句匯入 pygame 和 random 庫。以下是匯入這些庫的程式碼語句:
import pygame import random
3. 初始化 Pygame
要初始化 pygame,只需在匯入庫後呼叫 pygame.init() 方法。
pygame.init()
4. 設定螢幕
描述螢幕解析度並透過 pygame.display.set_mode() 方法建立遊戲視窗。
5. 定義顏色和屬性
您必須設定顏色併為鳥和管道定義屬性。
6. 建立繪圖函式
建立將在螢幕上為鳥和管道佈局的函式。
7. 實現碰撞檢測
現在,加入一個函式來確定鳥是否與管道或螢幕邊界發生碰撞。
8. 管理管道
開發一個函式,允許進行更改並新增可能需要的新的管道。
9. 運行遊戲迴圈
接收使用者的輸入,管理遊戲狀態,識別碰撞並重新繪製介面。
10. 結束遊戲
在檢測到與 `pygame.quit()` 的幫助下檢測到碰撞時退出遊戲視窗。
使用 Pygame 開發 Flappy Bird 遊戲的 Python 程式碼
import pygame import random # Initialize Pygame pygame.init() # Screen dimensions SCREEN_WIDTH = 400 SCREEN_HEIGHT = 600 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Flappy Bird") # Colors WHITE = (255, 255, 255) BLACK = (0, 0, 0) GREEN = (0, 255, 0) # Bird properties BIRD_WIDTH = 40 BIRD_HEIGHT = 30 bird_x = 50 bird_y = SCREEN_HEIGHT // 2 bird_velocity = 0 gravity = 0.5 # Gravity flap_strength = -7 # Moderate flap strength # Pipe properties PIPE_WIDTH = 70 PIPE_HEIGHT = 500 PIPE_GAP = 200 # Pipe gap pipe_velocity = -2 # Pipe velocity pipes = [] # Game variables score = 0 clock = pygame.time.Clock() flap_cooldown = 0 # Time before the bird can flap again def draw_bird(): pygame.draw.rect(screen, BLACK, (bird_x, bird_y, BIRD_WIDTH, BIRD_HEIGHT)) def draw_pipes(): for pipe in pipes: pygame.draw.rect(screen, GREEN, pipe['top']) pygame.draw.rect(screen, GREEN, pipe['bottom']) def check_collision(): global score bird_rect = pygame.Rect(bird_x, bird_y, BIRD_WIDTH, BIRD_HEIGHT) for pipe in pipes: if bird_rect.colliderect(pipe['top']) or bird_rect.colliderect(pipe['bottom']): return True if bird_y > SCREEN_HEIGHT or bird_y < 0: return True return False def update_pipes(): global score for pipe in pipes: pipe['top'].x += pipe_velocity pipe['bottom'].x += pipe_velocity if pipe['top'].x + PIPE_WIDTH < 0: pipes.remove(pipe) score += 1 if len(pipes) == 0 or pipes[-1]['top'].x < SCREEN_WIDTH - 300: pipe_height = random.randint(100, SCREEN_HEIGHT - PIPE_GAP - 100) pipes.append({ 'top': pygame.Rect(SCREEN_WIDTH, 0, PIPE_WIDTH, pipe_height), 'bottom': pygame.Rect(SCREEN_WIDTH, pipe_height + PIPE_GAP, PIPE_WIDTH, SCREEN_HEIGHT - pipe_height - PIPE_GAP) }) # Game loop running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and flap_cooldown <= 0: bird_velocity = flap_strength flap_cooldown = 10 # Set cooldown to prevent rapid flapping if event.type == pygame.MOUSEBUTTONDOWN and flap_cooldown <= 0: bird_velocity = flap_strength flap_cooldown = 10 # Set cooldown to prevent rapid flapping # Update bird position bird_velocity += gravity bird_y += bird_velocity # Update pipes update_pipes() # Check for collision if check_collision(): running = False # Manage flap cooldown if flap_cooldown > 0: flap_cooldown -= 1 # Draw everything screen.fill(WHITE) draw_bird() draw_pipes() # Display the score font = pygame.font.SysFont(None, 36) score_text = font.render(f'Score: {score}', True, BLACK) screen.blit(score_text, (10, 10)) pygame.display.flip() clock.tick(30) pygame.quit()
輸出


點選滑鼠右鍵,您將獲得分數並正確地玩遊戲。
Flappy Bird 遊戲總結
遊戲執行時,會彈出一個標題欄為“Flappy Bird”的視窗,並顯示小鳥和管道。小鳥會受到重力的影響,玩家需要使用空格鍵或滑鼠來使小鳥拍打翅膀。管道從螢幕右側出現並向左移動,玩家需要控制小鳥避免與管道接觸。分數位於畫素遊戲的左上角,隨著小鳥穿過管道而增加。
結論
這個使用pygame實現的Flappy Bird遊戲是一個簡單但非常實用的例子,展示了遊戲開發中的一些概念。如果開發者分析並將其應用到自己的遊戲中,可以學習到的技能包括精靈移動、碰撞檢測和遊戲狀態管理。還可以加入諸如音效、不同難度級別和改進的圖形等功能,使遊戲更有趣。
python_projects_from_basic_to_advanced.htm
廣告