Python游戲開(kāi)發(fā)快速入門(mén)到精通
《Python游戲開(kāi)發(fā)快速入門(mén)到精通》是一本基礎(chǔ)與實(shí)踐相結(jié)合的圖書(shū)。為了保證讀者可以學(xué)以致用,循序漸進(jìn)地進(jìn)行3個(gè)層次的實(shí)踐:基礎(chǔ)知識(shí)實(shí)踐、進(jìn)階應(yīng)用實(shí)踐和綜合應(yīng)用實(shí)踐,即基礎(chǔ)篇、案例篇、項(xiàng)目篇,全面介紹了使用pygame模塊進(jìn)行Python游戲開(kāi)發(fā)的必備知識(shí),以幫助讀者快速掌握Python+pygame開(kāi)發(fā)的技能,拓寬職場(chǎng)的道路。本書(shū)通過(guò)各種示例將學(xué)習(xí)與應(yīng)用相結(jié)合,打造輕松學(xué)習(xí)、零壓力學(xué)習(xí),通過(guò)案例對(duì)所學(xué)知識(shí)進(jìn)行綜合應(yīng)用,通過(guò)開(kāi)發(fā)實(shí)際項(xiàng)目將pygame游戲開(kāi)發(fā)的各項(xiàng)技能應(yīng)用到實(shí)際項(xiàng)目中。本書(shū)提供豐富的資源,包括實(shí)例、案例和項(xiàng)目的源碼及相關(guān)講解視頻、學(xué)習(xí)計(jì)劃表、指令速查表等,全方位為讀者提供服務(wù)。
本書(shū)不僅適合作為Python游戲開(kāi)發(fā)入門(mén)者的自學(xué)用書(shū),而且適合作為高等院校相關(guān)專(zhuān)業(yè)的教學(xué)參考書(shū),還適合供初入職場(chǎng)的開(kāi)發(fā)人員查閱、參考。
隨著人工智能、機(jī)器學(xué)習(xí)與數(shù)據(jù)分析的持續(xù)升溫,Python越來(lái)越受到程序開(kāi)發(fā)人員的青睞。目前,Python可以說(shuō)是最熱門(mén)的編程語(yǔ)言之一,它的應(yīng)用范圍非常廣泛,除了人工智能、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析等領(lǐng)域,它在Web開(kāi)發(fā)、游戲開(kāi)發(fā)等領(lǐng)域的應(yīng)用也非常受歡迎。特別是在游戲行業(yè)大受歡迎的今天,無(wú)論是對(duì)編程感興趣的愛(ài)好者、即將畢業(yè)的大學(xué)生,還是正在從事游戲開(kāi)發(fā)的人員,都對(duì)游戲行業(yè)的前景非?春茫玃ython游戲開(kāi)發(fā)類(lèi)圖書(shū)卻十分稀缺,讓很多有志于從事Python游戲開(kāi)發(fā)的用戶(hù)望而卻步,因此,我們特意編寫(xiě)了本書(shū)。
本書(shū)從初學(xué)者的角度出發(fā),為想要學(xué)習(xí)Python游戲開(kāi)發(fā)的編程愛(ài)好者、初級(jí)和中級(jí)游戲開(kāi)發(fā)人員和高等院校師生精心策劃,所講內(nèi)容從技術(shù)應(yīng)用的角度出發(fā),結(jié)合實(shí)際應(yīng)用進(jìn)行講解。本書(shū)側(cè)重Python游戲開(kāi)發(fā)的編程基礎(chǔ)與實(shí)踐,為保證讀者學(xué)以致用,在實(shí)踐方面循序漸進(jìn)地進(jìn)行3個(gè)層次的篇章介紹:基礎(chǔ)篇、案例篇和項(xiàng)目篇。
本 書(shū) 內(nèi) 容
全書(shū)共分為17章,主要通過(guò)基礎(chǔ)篇(9章) 案例篇(6章) 項(xiàng)目篇(2章)3大維度一體化的方式講解,具體的學(xué)習(xí)結(jié)構(gòu)如下圖所示:
本書(shū)特色
1.突出重點(diǎn)、學(xué)以致用
書(shū)中每個(gè)知識(shí)點(diǎn)都結(jié)合了簡(jiǎn)單易懂的實(shí)例代碼以及非常詳細(xì)的注釋信息,讀者能夠快速理解所學(xué)知識(shí),提升學(xué)習(xí)效率,縮短學(xué)習(xí)路徑。
2.提升思維、綜合運(yùn)用
本書(shū)會(huì)以知識(shí)點(diǎn)綜合運(yùn)用的方式,帶領(lǐng)讀者制作各種趣味性較強(qiáng)的游戲案例,讓讀者不斷提升編寫(xiě)Python游戲程序的思維,還可以快速提升對(duì)知識(shí)點(diǎn)的綜合運(yùn)用能力,讓讀者能夠回顧以往所學(xué)的知識(shí)點(diǎn),并結(jié)合新的知識(shí)點(diǎn)進(jìn)行綜合應(yīng)用。
3.綜合技術(shù)、實(shí)際項(xiàng)目
本書(shū)在項(xiàng)目篇中提供了兩個(gè)貼近實(shí)際應(yīng)用的項(xiàng)目,力求通過(guò)實(shí)際應(yīng)用使讀者更容易地掌握pygame。兩個(gè)項(xiàng)目都是根據(jù)實(shí)際開(kāi)發(fā)經(jīng)驗(yàn)總結(jié)而來(lái),包含了在實(shí)際開(kāi)發(fā)中所遇到的各種問(wèn)題。項(xiàng)目結(jié)構(gòu)清晰、擴(kuò)展性強(qiáng),讀者可根據(jù)個(gè)人需求進(jìn)行擴(kuò)展開(kāi)發(fā)。
4.精彩欄目、貼心提示
本書(shū)根據(jù)實(shí)際學(xué)習(xí)的需要,設(shè)置了注意說(shuō)明技巧等許多貼心的小欄目,輔助讀者輕松理解所學(xué)知識(shí),規(guī)避編程陷阱。
致讀者
本書(shū)由明日科技的Python開(kāi)發(fā)團(tuán)隊(duì)策劃并組織編寫(xiě),主要編寫(xiě)人員有王小科、李磊、高春艷、張?chǎng)巍?shū)娟、趙寧、周佳星、王國(guó)輝、賽奎春、葛忠月、宋萬(wàn)勇、楊麗、劉媛媛、依瑩瑩等。在編寫(xiě)本書(shū)的過(guò)程中,我們本著科學(xué)、嚴(yán)謹(jǐn)?shù)膽B(tài)度,力求精益求精,但疏漏之處在所難免,敬請(qǐng)廣大讀者批評(píng)斧正。
感謝您閱讀本書(shū),希望本書(shū)能成為您編程路上的領(lǐng)航者。
祝您讀書(shū)快樂(lè)!
編著者
第1篇 基礎(chǔ)篇001
第1章 初識(shí)pygame 002
1.1 了解Python 002
1.1.1 Python概述 002
1.1.2 Python能做什么 003
1.2 pygame簡(jiǎn)介 003
1.2.1 pygame的由來(lái) 003
1.2.2 pygame能做什么 003
1.2.3 pygame常用子模塊介紹 004
1.3 安裝Python 005
1.3.1 Python開(kāi)發(fā)環(huán)境概述 005
1.3.2 下載Python 005
1.3.3 安裝Python 007
1.3.4 測(cè)試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 測(cè)試pygame是否安裝成功 017
1.5 PyCharm開(kāi)發(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程序開(kāi)發(fā)流程 028
2.1 pygame程序開(kāi)發(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對(duì)象 033
2.1.5 設(shè)置游戲窗口狀態(tài) 035
2.2 pygame最小開(kāi)發(fā)框架 036
2.3 綜合案例——繪制拼圖游戲界面 038
2.4 實(shí)戰(zhàn)練習(xí) 039
第3章 pygame游戲開(kāi)發(fā)基礎(chǔ) 040
3.1 像素和pygame.Color對(duì)象 040
3.2 pygame中的透明度 043
3.2.1 像素透明度 043
3.2.2 顏色值透明度 044
3.2.3 圖像透明度 046
3.3 窗口坐標(biāo)系與pygame.Rect對(duì)象 046
3.3.1 窗口坐標(biāo)系 046
3.3.2 pygame.Rect對(duì)象 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對(duì)象 052
3.7.1 PixelArray對(duì)象概述 052
3.7.2 PixelArray對(duì)象常見(jiàn)操作 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字體類(lèi)對(duì)象 061
4.2.1 創(chuàng)建Font類(lèi)對(duì)象 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章 事件偵聽(tīng) 073
5.1 理解事件 073
5.2 事件檢索 074
5.3 處理鍵盤(pán)事件 077
5.4 處理鼠標(biāo)事件 079
5.5 設(shè)備輪詢(xún) 080
5.5.1 輪詢(xún)鍵盤(pán) 081
5.5.2 輪詢(xún)鼠標(biāo) 082
5.6 事件過(guò)濾 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對(duì)象 102
7.2.1 創(chuàng)建Surface對(duì)象 103
7.2.2 拷貝Surface對(duì)象 103
7.2.3 修改Surface對(duì)象 104
7.2.4 剪裁Surface區(qū)域 105
7.2.5 移動(dòng)Surface對(duì)象 105
7.2.6 子表面Subsurface 107
7.2.7 獲取Surface父對(duì)象 108
7.2.8 像素訪問(wèn)與設(shè)置 109
7.2.9 尺寸大小與矩形區(qū)域管理 110
7.3 Rect矩形對(duì)象 111
7.3.1 創(chuàng)建Rect對(duì)象 112
7.3.2 拷貝Rect對(duì)象 114
7.3.3 移動(dòng)Rect對(duì)象 114
7.3.4 縮放Rect對(duì)象 115
7.3.5 Rect對(duì)象交集運(yùn)算 115
7.3.6 判斷一個(gè)點(diǎn)是否在矩形內(nèi) 116
7.3.7 兩個(gè)矩形間的重疊檢測(cè) 116
7.4 綜合案例——跳躍的小球 120
7.5 實(shí)戰(zhàn)練習(xí) 125
第8章 精靈的使用 126
8.1 精靈基礎(chǔ) 126
8.1.1 精靈簡(jiǎn)介 126
8.1.2 精靈的創(chuàng)建 126
8.2 用精靈實(shí)現(xiàn)動(dòng)畫(huà) 128
8.2.1 定制精靈序列圖 128
8.2.2 加載精靈序列圖 129
8.2.3 繪制及更新幀圖 130
8.3 精靈組 134
8.4 精靈沖突檢測(cè) 134
8.4.1 兩個(gè)精靈之間的矩形沖突檢測(cè) 135
8.4.2 兩個(gè)精靈之間的圓沖突檢測(cè) 135
8.4.3 兩個(gè)精靈之間的像素遮罩沖突檢測(cè) 136
8.4.4 精靈和精靈組之間的矩形沖突檢測(cè) 137
8.4.5 精靈組之間的矩形沖突檢測(cè) 138
8.5 綜合案例——小超人吃蘋(píng)果 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對(duì)象 150
9.3.2 Channel對(duì)象 153
9.4 綜合案例——音樂(lè)播放器 157
9.5 實(shí)戰(zhàn)練習(xí) 160
第2篇 案例篇163
第10章 Flappy Bird (pygame+鍵盤(pán)事件監(jiān)聽(tīng)實(shí)現(xiàn)) 164
10.1 案例效果預(yù)覽 164
10.2 案例準(zhǔn)備 164
10.3 業(yè)務(wù)流程 165
10.4 實(shí)現(xiàn)過(guò)程 165
10.4.1 文件夾組織結(jié)構(gòu) 165
10.4.2 搭建主框架 165
10.4.3 創(chuàng)建小鳥(niǎo)類(lèi) 166
10.4.4 創(chuàng)建管道類(lèi) 168
10.4.5 計(jì)算得分 170
10.4.6 碰撞檢測(cè) 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)過(guò)程 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 背景音樂(lè)的播放與停止 183
11.4.7 碰撞和積分的實(shí)現(xiàn) 184
第12章 推箱子游戲(pygame + copy+按鍵事件監(jiān)聽(tīng)+ 棧操作實(shí)現(xiàn)) 187
12.1 需求分析 187
12.2 案例準(zhǔn)備 188
12.3 業(yè)務(wù)流程 188
12.4 實(shí)現(xiàn)過(guò)程 189
12.4.1 文件夾組織結(jié)構(gòu) 189
12.4.2 搭建主框架 189
12.4.3 繪制游戲地圖 191
12.4.4 用鍵盤(pán)控制角色移動(dòng) 196
12.4.5 判斷游戲是否通關(guān) 200
12.4.6 記錄步數(shù) 201
12.4.7 撤銷(xiāo)角色已移動(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)過(guò)程 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文件讀寫(xiě)技術(shù)實(shí)現(xiàn)) 216
14.1 案例效果預(yù)覽 216
14.2 案例準(zhǔn)備 218
14.3 業(yè)務(wù)流程 218
14.4 實(shí)現(xiàn)過(guò)程 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章 畫(huà)圖工具(pygame + draw繪圖對(duì)象實(shí)現(xiàn)) 238
15.1 案例預(yù)覽效果 238
15.2 案例準(zhǔn)備 238
15.3 業(yè)務(wù)流程 239
15.4 實(shí)現(xiàn)過(guò)程 240
15.4.1 文件夾組織結(jié)構(gòu) 240
15.4.2 菜單類(lèi)設(shè)計(jì) 240
15.4.3 畫(huà)筆類(lèi)設(shè)計(jì) 242
15.4.4 窗口繪制類(lèi)設(shè)計(jì) 243
15.4.5 畫(huà)圖工具主類(lèi)設(shè)計(jì) 245
第3篇 項(xiàng)目篇247
第16章 繽紛水果消消樂(lè)(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)開(kāi)發(fā)必備 251
16.3.1 開(kāi)發(fā)工具準(zhǔn)備 251
16.3.2 文件夾組織結(jié)構(gòu) 252
16.4 消消樂(lè)游戲的實(shí)現(xiàn) 252
16.4.1 搭建游戲主框架 252
16.4.2 創(chuàng)建精靈類(lèi) 254
16.4.3 游戲首屏頁(yè)面的實(shí)現(xiàn) 256
16.4.4 游戲主頁(yè)面的實(shí)現(xiàn) 258
16.4.5 可消除水果的檢測(cè)與標(biāo)記清除 261
16.4.6 水果的掉落 266
16.4.7 點(diǎn)擊相鄰水果時(shí)的交換 268
16.4.8 游戲積分排行榜頁(yè)面的實(shí)現(xiàn) 271
16.4.9 “死圖”的判斷 273
16.4.10 游戲倒計(jì)時(shí)的實(shí)現(xiàn) 276
第17章 車(chē)牌自動(dòng)識(shí)別計(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)開(kāi)發(fā)必備 283
17.3.1 開(kāi)發(fā)工具準(zhǔn)備 283
17.3.2 文件夾組織結(jié)構(gòu) 283
17.4 車(chē)牌自動(dòng)識(shí)別計(jì)費(fèi)系統(tǒng)的實(shí)現(xiàn) 283
17.4.1 實(shí)現(xiàn)系統(tǒng)窗體 283
17.4.2 顯示攝像頭畫(huà)面 285
17.4.3 創(chuàng)建保存數(shù)據(jù)文件 286
17.4.4 識(shí)別車(chē)牌 287
17.4.5 車(chē)輛信息的保存與讀取 290
17.4.6 收入統(tǒng)計(jì)的實(shí)現(xiàn) 292