《Python游戲開發(fā)快速入門到精通》是一本基礎與實踐相結合的圖書。為了保證讀者可以學以致用,循序漸進地進行3個層次的實踐:基礎知識實踐、進階應用實踐和綜合應用實踐,即基礎篇、案例篇、項目篇,全面介紹了使用pygame模塊進行Python游戲開發(fā)的必備知識,以幫助讀者快速掌握Python+pygame開發(fā)的技能,拓寬職場的道路。本書通過各種示例將學習與應用相結合,打造輕松學習、零壓力學習,通過案例對所學知識進行綜合應用,通過開發(fā)實際項目將pygame游戲開發(fā)的各項技能應用到實際項目中。本書提供豐富的資源,包括實例、案例和項目的源碼及相關講解視頻、學習計劃表、指令速查表等,全方位為讀者提供服務。
本書不僅適合作為Python游戲開發(fā)入門者的自學用書,而且適合作為高等院校相關專業(yè)的教學參考書,還適合供初入職場的開發(fā)人員查閱、參考。
第1篇 基礎篇001
第1章 初識pygame 002
1.1 了解Python 002
1.1.1 Python概述 002
1.1.2 Python能做什么 003
1.2 pygame簡介 003
1.2.1 pygame的由來 003
1.2.2 pygame能做什么 003
1.2.3 pygame常用子模塊介紹 004
1.3 安裝Python 005
1.3.1 Python開發(fā)環(huán)境概述 005
1.3.2 下載Python 005
1.3.3 安裝Python 007
1.3.4 測試Python是否安裝成功 009
1.3.5 Python安裝失敗的解決方法 010
1.4 安裝pygame 012
1.4.1 使用pip install命令安裝 013
1.4.2 使用Wheel文件離線安裝 014
1.4.3 測試pygame是否安裝成功 017
1.5 PyCharm開發(fā)工具的下載與安裝 019
1.5.1 下載PyCharm 019
1.5.2 安裝PyCharm 020
1.5.3 啟動并配置PyCharm 022
1.6 第一個pygame程序 026
1.7 實戰(zhàn)練習 026
第2章 pygame程序開發(fā)流程 028
2.1 pygame程序開發(fā)流程 028
2.1.1 導入pygame模塊 028
2.1.2 初始化pygame 029
2.1.3 創(chuàng)建pygame窗口 030
2.1.4 窗口圖像渲染——Surface對象 033
2.1.5 設置游戲窗口狀態(tài) 035
2.2 pygame最小開發(fā)框架 036
2.3 綜合案例——繪制拼圖游戲界面 038
2.4 實戰(zhàn)練習 039
第3章 pygame游戲開發(fā)基礎 040
3.1 像素和pygame.Color對象 040
3.2 pygame中的透明度 043
3.2.1 像素透明度 043
3.2.2 顏色值透明度 044
3.2.3 圖像透明度 046
3.3 窗口坐標系與pygame.Rect對象 046
3.3.1 窗口坐標系 046
3.3.2 pygame.Rect對象 046
3.4 控制幀速率 047
3.4.1 非精確控制——clock().tick() 048
3.4.2 精確控制——clock().tick_busy_loop() 048
3.5 向量在pygame中的使用 048
3.5.1 向量的介紹 048
3.5.2 向量的使用 049
3.6 三角函數(shù)介紹及其使用 050
3.7 pygame.PixelArray對象 052
3.7.1 PixelArray對象概述 052
3.7.2 PixelArray對象常見操作 053
3.7.3 圖像透明化處理 054
3.8 pygame的錯誤處理 055
3.9 綜合案例——繪制動態(tài)太極圖 056
3.10 實戰(zhàn)練習 058
第4章 字體和文字 059
4.1 加載和初始化字體模塊 059
4.1.1 初始化與還原字體模塊 060
4.1.2 獲取可用字體 060
4.1.3 獲取pygame模塊提供的默認字體文件 061
4.2 Font字體類對象 061
4.2.1 創(chuàng)建Font類對象 062
4.2.2 渲染文本 062
4.2.3 設置及獲取文本渲染模式 065
4.2.4 獲取文本渲染參數(shù) 067
4.3 綜合案例——繪制“Python之禪” 068
4.4 實戰(zhàn)練習 072
第5章 事件偵聽 073
5.1 理解事件 073
5.2 事件檢索 074
5.3 處理鍵盤事件 077
5.4 處理鼠標事件 079
5.5 設備輪詢 080
5.5.1 輪詢鍵盤 081
5.5.2 輪詢鼠標 082
5.6 事件過濾 083
5.7 自定義事件 084
5.8 綜合案例——擋板接球游戲 084
5.9 實戰(zhàn)練習 087
第6章 圖形繪制 088
6.1 pygame.draw模塊概述 088
6.2 使用pygame.draw模塊繪制基本圖形 088
6.2.1 繪制線段 088
6.2.2 繪制矩形 090
6.2.3 繪制多邊形 091
6.2.4 繪制圓 093
6.2.5 繪制橢圓 096
6.2.6 繪制弧線 097
6.3 綜合案例——會動的烏龜 099
6.4 實戰(zhàn)練習 101
第7章 位圖圖形 102
7.1 位圖基礎 102
7.2 Surface對象 102
7.2.1 創(chuàng)建Surface對象 103
7.2.2 拷貝Surface對象 103
7.2.3 修改Surface對象 104
7.2.4 剪裁Surface區(qū)域 105
7.2.5 移動Surface對象 105
7.2.6 子表面Subsurface 107
7.2.7 獲取Surface父對象 108
7.2.8 像素訪問與設置 109
7.2.9 尺寸大小與矩形區(qū)域管理 110
7.3 Rect矩形對象 111
7.3.1 創(chuàng)建Rect對象 112
7.3.2 拷貝Rect對象 114
7.3.3 移動Rect對象 114
7.3.4 縮放Rect對象 115
7.3.5 Rect對象交集運算 115
7.3.6 判斷一個點是否在矩形內 116
7.3.7 兩個矩形間的重疊檢測 116
7.4 綜合案例——跳躍的小球 120
7.5 實戰(zhàn)練習 125
第8章 精靈的使用 126
8.1 精靈基礎 126
8.1.1 精靈簡介 126
8.1.2 精靈的創(chuàng)建 126
8.2 用精靈實現(xiàn)動畫 128
8.2.1 定制精靈序列圖 128
8.2.2 加載精靈序列圖 129
8.2.3 繪制及更新幀圖 130
8.3 精靈組 134
8.4 精靈沖突檢測 134
8.4.1 兩個精靈之間的矩形沖突檢測 135
8.4.2 兩個精靈之間的圓沖突檢測 135
8.4.3 兩個精靈之間的像素遮罩沖突檢測 136
8.4.4 精靈和精靈組之間的矩形沖突檢測 137
8.4.5 精靈組之間的矩形沖突檢測 138
8.5 綜合案例——小超人吃蘋果 138
8.6 實戰(zhàn)練習 141
第9章 音頻處理 142
9.1 設備的初始化 142
9.2 聲音的控制 143
9.2.1 加載聲音文件 143
9.2.2 控制聲音流 143
9.3 管理聲音 150
9.3.1 Sound對象 150
9.3.2 Channel對象 153
9.4 綜合案例——音樂播放器 157
9.5 實戰(zhàn)練習 160
第2篇 案例篇163
第10章 Flappy Bird (pygame+鍵盤事件監(jiān)聽實現(xiàn)) 164
10.1 案例效果預覽 164
10.2 案例準備 164
10.3 業(yè)務流程 165
10.4 實現(xiàn)過程 165
10.4.1 文件夾組織結構 165
10.4.2 搭建主框架 165
10.4.3 創(chuàng)建小鳥類 166
10.4.4 創(chuàng)建管道類 168
10.4.5 計算得分 170
10.4.6 碰撞檢測 172
第11章 瑪麗冒險 (pygame + itertools + random實現(xiàn)) 174
11.1 案例效果預覽 174
11.2 案例準備 175
11.3 業(yè)務流程 176
11.4 實現(xiàn)過程 176
11.4.1 文件夾組織結構 176
11.4.2 游戲窗體的實現(xiàn) 176
11.4.3 地圖的加載 177
11.4.4 瑪麗的跳躍功能 179
11.4.5 隨機出現(xiàn)的障礙 181
11.4.6 背景音樂的播放與停止 183
11.4.7 碰撞和積分的實現(xiàn) 184
第12章 推箱子游戲(pygame + copy+按鍵事件監(jiān)聽+ 棧操作實現(xiàn)) 187
12.1 需求分析 187
12.2 案例準備 188
12.3 業(yè)務流程 188
12.4 實現(xiàn)過程 189
12.4.1 文件夾組織結構 189
12.4.2 搭建主框架 189
12.4.3 繪制游戲地圖 191
12.4.4 用鍵盤控制角色移動 196
12.4.5 判斷游戲是否通關 200
12.4.6 記錄步數(shù) 201
12.4.7 撤銷角色已移動功能 202
12.4.8 重玩此關的實現(xiàn) 203
12.4.9 游戲進入下一關 204
第13章 飛機大戰(zhàn)游戲(pygame + sys + random + codecs實現(xiàn)) 206
13.1 案例效果預覽 206
13.2 案例準備 206
13.3 業(yè)務流程 207
13.4 實現(xiàn)過程 208
13.4.1 文件夾組織結構 208
13.4.2 主窗體的實現(xiàn) 208
13.4.3 創(chuàng)建游戲精靈 209
13.4.4 游戲核心邏輯 211
13.4.5 游戲排行榜 214
第14章 智力拼圖(pygame + random+csv文件讀寫技術實現(xiàn)) 216
14.1 案例效果預覽 216
14.2 案例準備 218
14.3 業(yè)務流程 218
14.4 實現(xiàn)過程 218
14.4.1 文件夾組織結構 218
14.4.2 搭建主框架 219
14.4.3 繪制游戲主窗體 221
14.4.4 移動游戲空白方格拼圖塊 226
14.4.5 統(tǒng)計空白方格拼圖塊移動步數(shù) 229
14.4.6 判斷拼圖是否成功 230
14.4.7 使用csv文件存取游戲數(shù)據(jù) 233
14.4.8 繪制游戲結束窗體 233
第15章 畫圖工具(pygame + draw繪圖對象實現(xiàn)) 238
15.1 案例預覽效果 238
15.2 案例準備 238
15.3 業(yè)務流程 239
15.4 實現(xiàn)過程 240
15.4.1 文件夾組織結構 240
15.4.2 菜單類設計 240
15.4.3 畫筆類設計 242
15.4.4 窗口繪制類設計 243
15.4.5 畫圖工具主類設計 245
第3篇 項目篇247
第16章 繽紛水果消消樂(pygame + random + time + csv實現(xiàn)) 248
16.1 需求分析 248
16.2 系統(tǒng)設計 248
16.2.1 系統(tǒng)功能結構 248
16.2.2 系統(tǒng)業(yè)務流程 248
16.2.3 系統(tǒng)預覽 249
16.3 系統(tǒng)開發(fā)必備 251
16.3.1 開發(fā)工具準備 251
16.3.2 文件夾組織結構 252
16.4 消消樂游戲的實現(xiàn) 252
16.4.1 搭建游戲主框架 252
16.4.2 創(chuàng)建精靈類 254
16.4.3 游戲首屏頁面的實現(xiàn) 256
16.4.4 游戲主頁面的實現(xiàn) 258
16.4.5 可消除水果的檢測與標記清除 261
16.4.6 水果的掉落 266
16.4.7 點擊相鄰水果時的交換 268
16.4.8 游戲積分排行榜頁面的實現(xiàn) 271
16.4.9 “死圖”的判斷 273
16.4.10 游戲倒計時的實現(xiàn) 276
第17章 車牌自動識別計費系統(tǒng)(pygame+pandas+matplotlib+baidu- aip+ Opencv-Python實現(xiàn)) 280
17.1 需求分析 280
17.2 系統(tǒng)設計 280
17.2.1 系統(tǒng)功能結構 280
17.2.2 系統(tǒng)業(yè)務流程 281
17.2.3 系統(tǒng)預覽 282
17.3 系統(tǒng)開發(fā)必備 283
17.3.1 開發(fā)工具準備 283
17.3.2 文件夾組織結構 283
17.4 車牌自動識別計費系統(tǒng)的實現(xiàn) 283
17.4.1 實現(xiàn)系統(tǒng)窗體 283
17.4.2 顯示攝像頭畫面 285
17.4.3 創(chuàng)建保存數(shù)據(jù)文件 286
17.4.4 識別車牌 287
17.4.5 車輛信息的保存與讀取 290
17.4.6 收入統(tǒng)計的實現(xiàn) 292