《Python游戲開發(fā)快速入門到精通》是一本基礎(chǔ)與實(shí)踐相結(jié)合的圖書。為了保證讀者可以學(xué)以致用,循序漸進(jìn)地進(jìn)行3個(gè)層次的實(shí)踐:基礎(chǔ)知識實(shí)踐、進(jìn)階應(yīng)用實(shí)踐和綜合應(yīng)用實(shí)踐,即基礎(chǔ)篇、案例篇、項(xiàng)目篇,全面介紹了使用pygame模塊進(jìn)行Python游戲開發(fā)的必備知識,以幫助讀者快速掌握Python+pygame開發(fā)的技能,拓寬職場的道路。本書通過各種示例將學(xué)習(xí)與應(yīng)用相結(jié)合,打造輕松學(xué)習(xí)、零壓力學(xué)習(xí),通過案例對所學(xué)知識進(jìn)行綜合應(yīng)用,通過開發(fā)實(shí)際項(xiàng)目將pygame游戲開發(fā)的各項(xiàng)技能應(yīng)用到實(shí)際項(xiàng)目中。本書提供豐富的資源,包括實(shí)例、案例和項(xiàng)目的源碼及相關(guān)講解視頻、學(xué)習(xí)計(jì)劃表、指令速查表等,全方位為讀者提供服務(wù)。
本書不僅適合作為Python游戲開發(fā)入門者的自學(xué)用書,而且適合作為高等院校相關(guān)專業(yè)的教學(xué)參考書,還適合供初入職場的開發(fā)人員查閱、參考。
第1篇 基礎(chǔ)篇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 啟動(dòng)并配置PyCharm 022
1.6 第一個(gè)pygame程序 026
1.7 實(shí)戰(zhàn)練習(xí) 026
第2章 pygame程序開發(fā)流程 028
2.1 pygame程序開發(fā)流程 028
2.1.1 導(dǎo)入pygame模塊 028
2.1.2 初始化pygame 029
2.1.3 創(chuàng)建pygame窗口 030
2.1.4 窗口圖像渲染——Surface對象 033
2.1.5 設(shè)置游戲窗口狀態(tài) 035
2.2 pygame最小開發(fā)框架 036
2.3 綜合案例——繪制拼圖游戲界面 038
2.4 實(shí)戰(zhàn)練習(xí) 039
第3章 pygame游戲開發(fā)基礎(chǔ) 040
3.1 像素和pygame.Color對象 040
3.2 pygame中的透明度 043
3.2.1 像素透明度 043
3.2.2 顏色值透明度 044
3.2.3 圖像透明度 046
3.3 窗口坐標(biāo)系與pygame.Rect對象 046
3.3.1 窗口坐標(biāo)系 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的錯(cuò)誤處理 055
3.9 綜合案例——繪制動(dòng)態(tài)太極圖 056
3.10 實(shí)戰(zhàn)練習(xí) 058
第4章 字體和文字 059
4.1 加載和初始化字體模塊 059
4.1.1 初始化與還原字體模塊 060
4.1.2 獲取可用字體 060
4.1.3 獲取pygame模塊提供的默認(rèn)字體文件 061
4.2 Font字體類對象 061
4.2.1 創(chuàng)建Font類對象 062
4.2.2 渲染文本 062
4.2.3 設(shè)置及獲取文本渲染模式 065
4.2.4 獲取文本渲染參數(shù) 067
4.3 綜合案例——繪制“Python之禪” 068
4.4 實(shí)戰(zhàn)練習(xí) 072
第5章 事件偵聽 073
5.1 理解事件 073
5.2 事件檢索 074
5.3 處理鍵盤事件 077
5.4 處理鼠標(biāo)事件 079
5.5 設(shè)備輪詢 080
5.5.1 輪詢鍵盤 081
5.5.2 輪詢鼠標(biāo) 082
5.6 事件過濾 083
5.7 自定義事件 084
5.8 綜合案例——擋板接球游戲 084
5.9 實(shí)戰(zhàn)練習(xí) 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 綜合案例——會(huì)動(dòng)的烏龜 099
6.4 實(shí)戰(zhàn)練習(xí) 101
第7章 位圖圖形 102
7.1 位圖基礎(chǔ) 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 移動(dòng)Surface對象 105
7.2.6 子表面Subsurface 107
7.2.7 獲取Surface父對象 108
7.2.8 像素訪問與設(shè)置 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 移動(dòng)Rect對象 114
7.3.4 縮放Rect對象 115
7.3.5 Rect對象交集運(yùn)算 115
7.3.6 判斷一個(gè)點(diǎn)是否在矩形內(nèi) 116
7.3.7 兩個(gè)矩形間的重疊檢測 116
7.4 綜合案例——跳躍的小球 120
7.5 實(shí)戰(zhàn)練習(xí) 125
第8章 精靈的使用 126
8.1 精靈基礎(chǔ) 126
8.1.1 精靈簡介 126
8.1.2 精靈的創(chuàng)建 126
8.2 用精靈實(shí)現(xiàn)動(dòng)畫 128
8.2.1 定制精靈序列圖 128
8.2.2 加載精靈序列圖 129
8.2.3 繪制及更新幀圖 130
8.3 精靈組 134
8.4 精靈沖突檢測 134
8.4.1 兩個(gè)精靈之間的矩形沖突檢測 135
8.4.2 兩個(gè)精靈之間的圓沖突檢測 135
8.4.3 兩個(gè)精靈之間的像素遮罩沖突檢測 136
8.4.4 精靈和精靈組之間的矩形沖突檢測 137
8.4.5 精靈組之間的矩形沖突檢測 138
8.5 綜合案例——小超人吃蘋果 138
8.6 實(shí)戰(zhàn)練習(xí) 141
第9章 音頻處理 142
9.1 設(shè)備的初始化 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 實(shí)戰(zhàn)練習(xí) 160
第2篇 案例篇163
第10章 Flappy Bird (pygame+鍵盤事件監(jiān)聽實(shí)現(xiàn)) 164
10.1 案例效果預(yù)覽 164
10.2 案例準(zhǔn)備 164
10.3 業(yè)務(wù)流程 165
10.4 實(shí)現(xiàn)過程 165
10.4.1 文件夾組織結(jié)構(gòu) 165
10.4.2 搭建主框架 165
10.4.3 創(chuàng)建小鳥類 166
10.4.4 創(chuàng)建管道類 168
10.4.5 計(jì)算得分 170
10.4.6 碰撞檢測 172
第11章 瑪麗冒險(xiǎn) (pygame + itertools + random實(shí)現(xiàn)) 174
11.1 案例效果預(yù)覽 174
11.2 案例準(zhǔn)備 175
11.3 業(yè)務(wù)流程 176
11.4 實(shí)現(xiàn)過程 176
11.4.1 文件夾組織結(jié)構(gòu) 176
11.4.2 游戲窗體的實(shí)現(xiàn) 176
11.4.3 地圖的加載 177
11.4.4 瑪麗的跳躍功能 179
11.4.5 隨機(jī)出現(xiàn)的障礙 181
11.4.6 背景音樂的播放與停止 183
11.4.7 碰撞和積分的實(shí)現(xiàn) 184
第12章 推箱子游戲(pygame + copy+按鍵事件監(jiān)聽+ 棧操作實(shí)現(xiàn)) 187
12.1 需求分析 187
12.2 案例準(zhǔn)備 188
12.3 業(yè)務(wù)流程 188
12.4 實(shí)現(xiàn)過程 189
12.4.1 文件夾組織結(jié)構(gòu) 189
12.4.2 搭建主框架 189
12.4.3 繪制游戲地圖 191
12.4.4 用鍵盤控制角色移動(dòng) 196
12.4.5 判斷游戲是否通關(guān) 200
12.4.6 記錄步數(shù) 201
12.4.7 撤銷角色已移動(dòng)功能 202
12.4.8 重玩此關(guān)的實(shí)現(xiàn) 203
12.4.9 游戲進(jìn)入下一關(guān) 204
第13章 飛機(jī)大戰(zhàn)游戲(pygame + sys + random + codecs實(shí)現(xiàn)) 206
13.1 案例效果預(yù)覽 206
13.2 案例準(zhǔn)備 206
13.3 業(yè)務(wù)流程 207
13.4 實(shí)現(xiàn)過程 208
13.4.1 文件夾組織結(jié)構(gòu) 208
13.4.2 主窗體的實(shí)現(xiàn) 208
13.4.3 創(chuàng)建游戲精靈 209
13.4.4 游戲核心邏輯 211
13.4.5 游戲排行榜 214
第14章 智力拼圖(pygame + random+csv文件讀寫技術(shù)實(shí)現(xiàn)) 216
14.1 案例效果預(yù)覽 216
14.2 案例準(zhǔn)備 218
14.3 業(yè)務(wù)流程 218
14.4 實(shí)現(xiàn)過程 218
14.4.1 文件夾組織結(jié)構(gòu) 218
14.4.2 搭建主框架 219
14.4.3 繪制游戲主窗體 221
14.4.4 移動(dòng)游戲空白方格拼圖塊 226
14.4.5 統(tǒng)計(jì)空白方格拼圖塊移動(dòng)步數(shù) 229
14.4.6 判斷拼圖是否成功 230
14.4.7 使用csv文件存取游戲數(shù)據(jù) 233
14.4.8 繪制游戲結(jié)束窗體 233
第15章 畫圖工具(pygame + draw繪圖對象實(shí)現(xiàn)) 238
15.1 案例預(yù)覽效果 238
15.2 案例準(zhǔn)備 238
15.3 業(yè)務(wù)流程 239
15.4 實(shí)現(xiàn)過程 240
15.4.1 文件夾組織結(jié)構(gòu) 240
15.4.2 菜單類設(shè)計(jì) 240
15.4.3 畫筆類設(shè)計(jì) 242
15.4.4 窗口繪制類設(shè)計(jì) 243
15.4.5 畫圖工具主類設(shè)計(jì) 245
第3篇 項(xiàng)目篇247
第16章 繽紛水果消消樂(pygame + random + time + csv實(shí)現(xiàn)) 248
16.1 需求分析 248
16.2 系統(tǒng)設(shè)計(jì) 248
16.2.1 系統(tǒng)功能結(jié)構(gòu) 248
16.2.2 系統(tǒng)業(yè)務(wù)流程 248
16.2.3 系統(tǒng)預(yù)覽 249
16.3 系統(tǒng)開發(fā)必備 251
16.3.1 開發(fā)工具準(zhǔn)備 251
16.3.2 文件夾組織結(jié)構(gòu) 252
16.4 消消樂游戲的實(shí)現(xiàn) 252
16.4.1 搭建游戲主框架 252
16.4.2 創(chuàng)建精靈類 254
16.4.3 游戲首屏頁面的實(shí)現(xiàn) 256
16.4.4 游戲主頁面的實(shí)現(xiàn) 258
16.4.5 可消除水果的檢測與標(biāo)記清除 261
16.4.6 水果的掉落 266
16.4.7 點(diǎn)擊相鄰水果時(shí)的交換 268
16.4.8 游戲積分排行榜頁面的實(shí)現(xiàn) 271
16.4.9 “死圖”的判斷 273
16.4.10 游戲倒計(jì)時(shí)的實(shí)現(xiàn) 276
第17章 車牌自動(dòng)識別計(jì)費(fèi)系統(tǒng)(pygame+pandas+matplotlib+baidu- aip+ Opencv-Python實(shí)現(xiàn)) 280
17.1 需求分析 280
17.2 系統(tǒng)設(shè)計(jì) 280
17.2.1 系統(tǒng)功能結(jié)構(gòu) 280
17.2.2 系統(tǒng)業(yè)務(wù)流程 281
17.2.3 系統(tǒng)預(yù)覽 282
17.3 系統(tǒng)開發(fā)必備 283
17.3.1 開發(fā)工具準(zhǔn)備 283
17.3.2 文件夾組織結(jié)構(gòu) 283
17.4 車牌自動(dòng)識別計(jì)費(fèi)系統(tǒng)的實(shí)現(xiàn) 283
17.4.1 實(shí)現(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)計(jì)的實(shí)現(xiàn) 292