Python面向?qū)ο缶幊蹋簶?gòu)建游戲和GUI
定 價(jià):99.8 元
當(dāng)前圖書已被 66 所學(xué)校薦購(gòu)過(guò)!
查看明細(xì)
- 作者:[美]艾維·卡爾布(Irv Kalb)
- 出版時(shí)間:2023/3/1
- ISBN:9787115602312
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:295
- 紙張:
- 版次:01
- 開本:16開
本書首先介紹構(gòu)建類和創(chuàng)建對(duì)象的基礎(chǔ)知識(shí),并結(jié)合代碼講述如何將理論付諸實(shí)踐;然后討論面向?qū)ο缶幊痰年P(guān)鍵概念——封裝、多態(tài)性和繼承,包括如何使用對(duì)象管理器創(chuàng)建并管理多個(gè)對(duì)象,如何通過(guò)封裝對(duì)客戶端代碼隱藏對(duì)象的內(nèi)部細(xì)節(jié),如何使用多態(tài)性定義一個(gè)接口并在多個(gè)類中實(shí)現(xiàn)它,如何應(yīng)用繼承構(gòu)建現(xiàn)有代碼;最后講述如何構(gòu)建一款帶完整的動(dòng)畫和聲音的視頻游戲,從而將所有內(nèi)容整合在一起。本書涵蓋了兩個(gè)功能齊全的Python代碼包,它們將加速Python中圖形用戶界面程序的開發(fā)。
本書不僅適合Python開發(fā)人員閱讀,還適合計(jì)算機(jī)相關(guān)專業(yè)的師生閱讀。
1.通過(guò)面向?qū)ο缶幊蹋∣bject-Oriented Programming,OOP),能有效地解決計(jì)算問(wèn)題;
2.深入剖析OOP的封裝、多態(tài)性和繼承,展示了如何在Python中使用這些特性開發(fā)游戲和應(yīng)用程序;
3.通過(guò)實(shí)踐,綜合運(yùn)用本書介紹的許多OOP技術(shù)和GUI元素,創(chuàng)建一個(gè)功能完整的視頻游戲;
4.理解OOP的工作方式,提高代碼的可讀性,提升編程的水平和效率。
Irv Kalb是加州大學(xué)圣克魯斯硅谷分校和硅谷大學(xué)的客座教授,負(fù)責(zé)“Python入門”與“Python面向?qū)ο缶幊獭闭n程的教學(xué)。Irv擁有計(jì)算機(jī)科學(xué)的學(xué)士和碩士學(xué)位,使用多種計(jì)算機(jī)語(yǔ)言進(jìn)行面向?qū)ο缶幊桃殉^(guò)30年,并且到現(xiàn)在已經(jīng)有超過(guò)10年的教學(xué)經(jīng)驗(yàn)。他有幾十年的軟件開發(fā)經(jīng)驗(yàn),主要關(guān)注教育軟件的開發(fā)。在Furry Pants Productions公司,他和妻子以Darby the Dalmatian這個(gè)角色為原型,制作并發(fā)布了兩張?jiān)⒔逃跇?lè)的CD-ROM。Irv還撰寫了Learn to Program with Python 3: A Step-by-step Guide to Programming(Apress)一書。
Irv深入?yún)⑴c了極限飛盤(Ultimate Frisbee)這項(xiàng)運(yùn)動(dòng)的早期開發(fā)。他主持編寫了多個(gè)版本的官方規(guī)則手冊(cè),并與人合著了關(guān)于這項(xiàng)運(yùn)動(dòng)的圖書—— Ultimate: Fundamentals of the Sport。
目 錄
第 一部分 面向?qū)ο缶幊倘腴T
第 1章 過(guò)程式Python示例 2
1.1 Higher or Lower紙牌游戲 2
1.1.1 表示數(shù)據(jù) 2
1.1.2 實(shí)現(xiàn) 3
1.1.3 可重用的代碼 5
1.2 銀行賬戶模擬 5
1.2.1 分析必要的操作和數(shù)據(jù) 5
1.2.2 實(shí)現(xiàn)1:不使用函數(shù)的單個(gè)賬戶 6
1.2.3 實(shí)現(xiàn)2:使用函數(shù)的單個(gè)賬戶 7
1.2.4 實(shí)現(xiàn)3:兩個(gè)賬戶 9
1.2.5 實(shí)現(xiàn)4:使用列表的多個(gè)賬戶 10
1.2.6 實(shí)現(xiàn)5:賬戶字典的列表 13
1.3 過(guò)程式實(shí)現(xiàn)的常見(jiàn)問(wèn)題 15
1.4 面向?qū)ο蠼鉀Q方案:初識(shí)類 15
1.5 小結(jié) 16
第 2章 通過(guò)面向?qū)ο缶幊棠M物體 17
2.1 構(gòu)建物體的軟件模型 17
2.2 類和對(duì)象簡(jiǎn)介 18
2.3 類、對(duì)象和實(shí)例化 19
2.3.1 在Python中編寫類 20
2.3.2 作用域和實(shí)例變量 21
2.3.3 函數(shù)和方法的區(qū)別 22
2.3.4 從類創(chuàng)建對(duì)象 22
2.3.5 調(diào)用對(duì)象的方法 23
2.3.6 從相同類創(chuàng)建多個(gè)實(shí)例 24
2.3.7 Python數(shù)據(jù)類型被實(shí)現(xiàn)為類 25
2.3.8 對(duì)象的定義 26
2.4 創(chuàng)建一個(gè)更加復(fù)雜的類 26
2.5 將一個(gè)更加復(fù)雜的物理對(duì)象表示為類 28
2.5.1 向方法傳遞實(shí)參 32
2.5.2 多個(gè)實(shí)例 33
2.5.3 初始化參數(shù) 34
2.6 類的使用 35
2.7 以O(shè)OP作為解決方案 35
2.8 小結(jié) 36
第3章 對(duì)象的思維模型和 “self”的意義 37
3.1 重看DimmerSwitch類 37
3.2 1號(hào)高級(jí)思維模型 38
3.3 2號(hào)深層模型 39
3.4 self的含義 41
3.5 小結(jié) 43
第4章 管理多個(gè)對(duì)象 44
4.1 銀行賬戶類 44
4.2 導(dǎo)入類的代碼 46
4.3 創(chuàng)建一些測(cè)試代碼 47
4.3.1 創(chuàng)建多個(gè)賬戶 47
4.3.2 在列表中包含多個(gè)Account對(duì)象 49
4.3.3 具有唯一標(biāo)識(shí)符的多個(gè)對(duì)象 51
4.3.4 創(chuàng)建一個(gè)交互式菜單 53
4.4 創(chuàng)建對(duì)象管理器 54
4.4.1 創(chuàng)建對(duì)象管理器 56
4.4.2 創(chuàng)建對(duì)象管理器的主代碼 58
4.5 使用異常更好地處理錯(cuò)誤 59
4.5.1 try和except 60
4.5.2 raise語(yǔ)句和自定義異常 60
4.6 在Bank程序中使用異常 61
4.6.1 使用異常的Account類 61
4.6.2 優(yōu)化后的Bank類 63
4.6.3 處理異常的主代碼 64
4.7 在對(duì)象列表上調(diào)用相同的方法 65
4.8 接口與實(shí)現(xiàn) 67
4.9 小結(jié) 67
第二部分 使用pygame創(chuàng)建圖形
用戶界面
第5章 pygame簡(jiǎn)介 70
5.1 安裝pygame 70
5.2 窗口 71
5.2.1 窗口坐標(biāo)系統(tǒng) 71
5.2.2 像素顏色 74
5.3 事件驅(qū)動(dòng)的程序 75
5.4 使用pygame 76
5.4.1 打開一個(gè)空白窗口 76
5.4.2 繪制圖片 79
5.4.3 檢測(cè)鼠標(biāo)單擊 81
5.4.4 處理鍵盤操作 83
5.4.5 創(chuàng)建基于位置的動(dòng)畫 86
5.4.6 使用pygame矩形 88
5.5 播放聲音 90
5.5.1 播放音效 90
5.5.2 播放背景音樂(lè) 91
5.6 繪制形狀 92
5.7 小結(jié) 95
第6章 面向?qū)ο蟮膒ygame 96
6.1 使用OOP pygame創(chuàng)建屏保球 96
6.1.1 創(chuàng)建Ball類 96
6.1.2 使用Ball類 98
6.1.3 創(chuàng)建多個(gè)Ball對(duì)象 99
6.1.4 創(chuàng)建大量Ball對(duì)象 100
6.2 構(gòu)建可重用的、面向?qū)ο蟮陌粹o 101
6.2.1 構(gòu)建一個(gè)Button類 101
6.2.2 使用SimpleButton的主代碼 103
6.2.3 創(chuàng)建包含多個(gè)按鈕的程序 104
6.3 構(gòu)建可重用的、面向?qū)ο蟮奈谋撅@示 105
6.3.1 顯示文本的步驟 105
6.3.2 創(chuàng)建SimpleText類 106
6.4 包含SimpleText和SimpleButton的彈球示例 107
6.5 對(duì)比接口與實(shí)現(xiàn) 109
6.6 回調(diào)函數(shù) 109
6.6.1 創(chuàng)建回調(diào)函數(shù) 110
6.6.2 對(duì)SimpleButton使用回調(diào)函數(shù) 110
6.7 小結(jié) 112
第7章 pygame GUI小部件 113
7.1 向函數(shù)或方法傳遞實(shí)參 113
7.1.1 位置和關(guān)鍵字形參 114
7.1.2 關(guān)于關(guān)鍵字形參的一些說(shuō)明 115
7.1.3 使用None作為默認(rèn)值 115
7.1.4 選擇關(guān)鍵字和默認(rèn)值 116
7.1.5 GUI小部件中的默認(rèn)值 117
7.2 pygwidgets包 117
7.2.1 設(shè)置 117
7.2.2 總體設(shè)計(jì)方法 118
7.2.3 添加圖片 119
7.2.4 添加按鈕、復(fù)選框和單選按鈕 119
7.2.5 文本輸出和輸入 122
7.2.6 其他pygwidgets類 124
7.2.7 pygwidgets示例程序 124
7.3 一致的API的重要性 125
7.4 小結(jié) 125
第三部分 封裝、多態(tài)性和繼承
第8章 封裝 128
8.1 函數(shù)的封裝 128
8.2 對(duì)象的封裝 129
8.3 封裝的含義 129
8.3.1 直接訪問(wèn)方式以及為什么應(yīng)該避免使用這種方式 130
8.3.2 嚴(yán)格解釋getter和setter 133
8.3.3 安全的直接訪問(wèn) 135
8.4 使實(shí)例變量更加私密 135
8.4.1 隱式私有 135
8.4.2 更加顯式地私有 135
8.5 裝飾器和@屬性 136
8.6 pygwidgets類中的封裝 139
8.7 一個(gè)真實(shí)的故事 140
8.8 抽象 141
8.9 小結(jié) 143
第9章 多態(tài)性 144
9.1 向現(xiàn)實(shí)世界的對(duì)象發(fā)送消息 144
9.2 編程中應(yīng)用多態(tài)性的經(jīng)典示例 145
9.3 使用pygame形狀的示例 146
9.3.1 Square類 146
9.3.2 Circle類和Triangle類 147
9.3.3 創(chuàng)建形狀的主程序 149
9.3.4 擴(kuò)展模式 151
9.4 pygwidgets表現(xiàn)出多態(tài)性 151
9.5 運(yùn)算符的多態(tài)性 152
9.5.1 魔術(shù)方法 153
9.5.2 比較運(yùn)算符的魔術(shù)方法 153
9.5.3 包含魔術(shù)方法的Rectangle類 154
9.5.4 使用魔術(shù)方法的主程序 156
9.5.5 數(shù)學(xué)運(yùn)算符的魔術(shù)方法 158
9.5.6 向量示例 158
9.6 創(chuàng)建對(duì)象中值的字符串表示 160
9.7 包含魔術(shù)方法的Fraction類 162
9.8 小結(jié) 165
第 10章 繼承 166
10.1 面向?qū)ο缶幊讨械睦^承 166
10.2 實(shí)現(xiàn)繼承 167
10.3 Employee和Manager示例 168
10.3.1 基類Employee 168
10.3.2 子類Manager 168
10.3.3 測(cè)試代碼 170
10.4 客戶端眼中的子類 171
10.5 現(xiàn)實(shí)世界的繼承示例 172
10.5.1 InputNumber 172
10.5.2 DisplayMoney 174
10.5.3 示例用法 176
10.6 從同一個(gè)基類繼承多個(gè)類 179
10.7 抽象類和抽象方法 182
10.8 pygwidgets如何使用繼承 185
10.9 類的層次 186
10.10 使用繼承編程的困難 187
10.11 小結(jié) 188
第 11章 管理對(duì)象使用的內(nèi)存 189
11.1 對(duì)象的生存期 189
11.1.1 引用計(jì)數(shù) 189
11.1.2 垃圾回收 194
11.2 類變量 194
11.2.1 類變量常量 194
11.2.2 將類變量用于計(jì)數(shù) 195
11.3 綜合運(yùn)用:氣球示例程序 196
11.3.1 常量模塊 197
11.3.2 主程序代碼 198
11.3.3 氣球管理器 200
11.3.4 Balloon類和對(duì)象 202
11.4 使用slots管理內(nèi)存 204
11.5 小結(jié) 206
第四部分 在游戲開發(fā)中使用OOP
第 12章 紙牌游戲 208
12.1 Card類 208
12.2 Deck類 210
12.3 Higher or Lower游戲 212
12.3.1 主程序 212
12.3.2 Game對(duì)象 213
12.4 使用__name__進(jìn)行測(cè)試 216
12.5 其他紙牌游戲 217
12.5.1 Blackjack牌堆 217
12.5.2 使用非標(biāo)準(zhǔn)牌堆的游戲 217
12.6 小結(jié) 218
第 13章 定時(shí)器 219
13.1 定時(shí)器演示程序 219
13.2 實(shí)現(xiàn)定時(shí)器的3種方法 220
13.2.1 統(tǒng)計(jì)幀數(shù) 220
13.2.2 定時(shí)器事件 221
13.2.3 通過(guò)計(jì)算經(jīng)過(guò)的時(shí)間來(lái)創(chuàng)建定時(shí)器 222
13.3 安裝pyghelpers 223
13.4 Timer類 224
13.5 顯示時(shí)間 226
13.5.1 CountUpTimer 226
13.5.2 CountDownTimer 228
13.6 小結(jié) 229
第 14章 動(dòng)畫 230
14.1 構(gòu)建動(dòng)畫類 230
14.1.1 SimpleAnimation類 230
14.1.2 SimpleSpriteSheetAnimation類 234
14.1.3 將兩個(gè)類合并起來(lái) 237
14.2 pygwidgets中的動(dòng)畫類 237
14.2.1 Animation類 238
14.2.2 SpriteSheetAnimation類 239
14.2.3 公共基類PygAnimation 240
14.2.4 示例動(dòng)畫程序 240
14.3 小結(jié) 241
第 15章 場(chǎng)景 242
15.1 狀態(tài)機(jī)方法 242
15.2 狀態(tài)機(jī)的一個(gè)pygame示例 244
15.3 用于管理許多場(chǎng)景的場(chǎng)景管理器 248
15.4 使用場(chǎng)景管理器的一個(gè)示例程序 249
15.4.1 主程序 250
15.4.2 構(gòu)建場(chǎng)景 252
15.4.3 一個(gè)典型場(chǎng)景 254
15.5 使用場(chǎng)景的Rock,Paper,Scissors 255
15.6 場(chǎng)景之間的通信 259
15.6.1 從目標(biāo)場(chǎng)景請(qǐng)求信息 259
15.6.2 向目標(biāo)場(chǎng)景發(fā)送信息 260
15.6.3 向所有場(chǎng)景發(fā)送信息 260
15.6.4 測(cè)試場(chǎng)景之間的通信 260
15.7 場(chǎng)景管理器的實(shí)現(xiàn) 261
15.7.1 run()方法 262
15.7.2 主方法 263
15.7.3 場(chǎng)景之間的通信 264
15.8 小結(jié) 265
第 16章 完整的Dodger 游戲 266
16.1 模態(tài)對(duì)話框 266
16.1.1 Yes/No和警告對(duì)話框 266
16.1.2 Answer對(duì)話框 269
16.2 構(gòu)建完整的Dodger游戲 271
16.2.1 游戲概述 271
16.2.2 實(shí)現(xiàn) 272
16.2.3 擴(kuò)展游戲 287
16.3 小結(jié) 287
第 17章 設(shè)計(jì)模式及收尾 289
17.1 模型-視圖-控制器 289
17.1.1 文件顯示示例 289
17.1.2 統(tǒng)計(jì)顯示示例 290
17.1.3 MVC模式的優(yōu)勢(shì) 294
17.2 小結(jié) 294