我們這個章節學習使用pygame開發游戲。平時我們玩兒過很多游戲,這次我們來開發一個自己的游戲,是不是很酷?趕緊開始吧!

## pygame 是什么
首先,我們還是先寫一個Helloworld,看一下怎么pygame是什么。
```
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
```

## 引入pygame
```
import pygame, sys
from pygame.locals import *
```
我嗎使用import語句將 pygame引入進來,pygame.locals定義了很多pygame需要使用的數據常量,因此,我們也把它引入進來。
## 初始化
我們調用`pygame.init()`完成pygame的加載,這個方法初始化了pygame用到的所有模塊。在寫游戲邏輯之前,一定要調用init方法,否則會報`pygame.error: font not initialized`的錯誤。
我們使用`pygame.display.set_mode((400, 300))`方法設置游戲窗口的寬高,注意我們傳入`(400, 300)`參數是一個元組;調用`pygame.display.set_caption('Hello World!')`方法設置游戲窗口的標題。
## 游戲主循環
接下來,我們使用了一個特殊的`while True:`循環。因為循環條件永遠為True,所以程序會一遍又一遍的執行循環體里的代碼。這個是游戲的主循環,我們一般會在這個循環里完成游戲的主要邏輯操作:
1. 處理游戲事件。
2. 更新游戲狀態。
3. 將游戲狀態畫到游戲窗口上。

## 游戲狀態
那什么是游戲狀態呢?英雄血量、子彈數量、敵人等級 這些數字會隨著游戲的推進發生變化,這些都是游戲狀態。我們根據用戶在游戲上操作來更改這些狀態。當這些狀態發生變更后,我們需要調用`pygame.display.update()`方法更新游戲畫面。

## 事件監聽
`pygame.event.get()` 方法獲取了用戶在游戲窗口上的所有操作,比如按鈕點擊、鍵盤按下等。因此,這個方法返回的是一個列表。我們使用for循環還取到每一事件,對事件作出響應。
## 退出游戲
`if event.type == QUIT:` 在下面的if語句里,我們判斷如果事件類型是QUIT,我們就調用`pygame.quit()`方法退出游戲。同時結束游戲的運行。

**阿達老師-孩子身邊的編程專家**
*完整課程請關注阿達老師,主頁里有完整的課程目錄和觀看地址*
- 課程介紹
- 搭建環境
- 什么是計算機
- 程序是怎么運行的
- 安裝python
- 項目實例-安裝IDE
- 變量和簡單數據類型
- 數據&變量
- 數字
- 字符串
- 布爾類型
- 項目實例
- 容器-列表
- 容器
- 列表
- 項目實例
- 容器-字典
- 定義字典
- 項目實例
- 數據類型總結
- 條件語句
- python條件語句
- 項目實例
- 循環語句
- for循環
- while循環
- 項目實例
- 函數
- 5.0函數定義
- 5.2函數實戰
- 6.文件系統
- 6.1 文件系統介紹&python查找文件
- 6.2 用python讀寫文件
- 7. python操作時間
- 8.面向對象
- 8.1 類和對象
- 8.2 繼承和重寫
- 8.3 面向對象項目實戰
- 9 GUI編程
- 9.1 GUI基礎
- 9.2 備忘清單GUI版
- 10.網絡
- 10.1 網絡的發展
- 10.2 python http
- 11.web開發
- 11.1 web基礎&HTML
- 11.2 CSS&JavaScript
- 11.3 網頁計算器
- 11.3 網站開發實戰-播客搭建
- 11.3 python-web
- 12. 項目實戰-數據處理
- 13. 項目實戰-AI入門
- 13.1 環境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 動畫基礎 Animation
- 從0開始學python第14.5節 pygame 加載圖片和聲音
- 從0開始學python第14.6節 pygame.sprite(上)
- 14.7 pygame.sprite模塊(下)
- 14.8 pygame射擊游戲(一)
- pygame射擊游戲(二)
- 14.8 pygame射擊游戲(三)
- 14.8 pygame射擊游戲(四)
- 14.8 pygame射擊游戲(五)