Python和Pygame游戲開發(fā)
錄?
第1章 安裝Python和Pygame 1
1.1 預(yù)備知識 1
1.2 下載和安裝Python 1
1.3 Windows下的安裝說明 1
1.4 Mac OS X上的安裝說明 2
1.5 Ubuntu和Linux上的安裝
說明 2
1.6 啟動Python 2
1.7 安裝Pygame 3
1.8 如何閱讀本書 4
1.9 特色的程序 4
1.10 下載圖形文件和聲音文件 4
1.11 行號和空格 4
1.12 圖書中的文本折行 5
1.13 在線檢查代碼 5
1.14 配套網(wǎng)站上的更多信息 6
第2章 Pygame基礎(chǔ)知識 7
2.1 GUI vs. CLI 7
2.2 使用Pygame的Hello World程序
源代碼 7
2.3 建立一個Pygame程序 8
2.4 游戲循環(huán)和游戲狀態(tài) 10
2.5 pygame.event.Event對象 11
2.6 QUIT事件和pygame.quit()
函數(shù) 12
2.7 像素坐標(biāo) 13
2.8 關(guān)于函數(shù)、方法、構(gòu)造函數(shù)和
模塊中的函數(shù)(及其差別)的
一些提示 13
2.9 Surface對象和窗口 14
2.10 顏色 15
2.11 顏色的透明度 16
2.12 pygame.Color對象 17
2.13 Rect對象 17
2.14 基本的繪制函數(shù) 19
2.15 pygame.PixelArray對象 22
2.16 pygame.display.update()函數(shù) 22
2.17 動畫 22
2.18 幀速率和pygame.time.Clock
對象 25
2.19 用pygame.image.load()和blit()
繪制圖像 26
2.20 字體 26
2.21 抗鋸齒 28
2.22 播放聲音 28
2.23 本章小結(jié) 29
第3章 Memory Puzzle游戲 31
3.1 如何玩Memory Puzzle游戲 31
3.2 嵌套的for循環(huán) 31
3.3 Memory Puzzle的源代碼 33
3.4 聲明和導(dǎo)入 40
3.5 幻數(shù)很糟糕 40
3.6 使用assert語句全面檢查 41
3.7 判斷一個數(shù)字是偶數(shù)還是奇數(shù) 42
3.8 較早崩潰和經(jīng)常崩潰 42
3.9 讓源代碼更好看一些 43
3.10 使用常量變量而不是字符串 44
3.11 確保有足夠的圖標(biāo) 44
3.12 元組vs.列表,不可變vs.可變 45
3.13 單項(xiàng)元組需要一個結(jié)尾的逗號 46
3.14 在列表和元組之間轉(zhuǎn)換 46
3.15 global語句以及為什么全局變量
是罪惡的 47
3.16 數(shù)據(jù)結(jié)構(gòu)和2D列表 48
3.17 “開始游戲”動畫 49
3.18 游戲循環(huán) 50
3.19 事件處理循環(huán) 50
3.20 檢查鼠標(biāo)光標(biāo)在哪一個方塊
之上 51
3.21 處理次點(diǎn)擊的方塊 52
3.22 處理不一致的一對圖標(biāo) 53
3.23 處理玩家獲勝 53
3.24 將游戲狀態(tài)繪制到屏幕 54
3.25 創(chuàng)建“揭開的方塊”數(shù)據(jù)結(jié)構(gòu) 55
3.26 創(chuàng)建游戲板數(shù)據(jù)結(jié)構(gòu):第1步—獲取所有可能的圖標(biāo) 55
3.27 第2步—打亂并截取所有圖標(biāo)
的列表 56
3.28 第3步—將圖標(biāo)放置到游戲
板上 56
3.29 將一個列表分割為列表的
列表 57
3.30 不同的坐標(biāo)系 58
3.31 從像素坐標(biāo)轉(zhuǎn)換為方塊坐標(biāo) 59
3.32 繪制圖標(biāo)以及語法糖 59
3.33 獲取游戲板控件的圖標(biāo)的形狀和
顏色的語法糖 61
3.34 繪制蓋住的方塊 61
3.35 處理揭開和覆蓋動畫 62
3.36 繪制整個游戲板 63
3.37 繪制高亮邊框 63
3.38 “開始游戲”動畫 64
3.39 揭開和蓋住成組的方塊 64
3.40 “游戲獲勝”動畫 65
3.41 判斷玩家是否已經(jīng)獲勝 65
3.42 為何要那么麻煩地使用main()
函數(shù) 66
3.43 為什么要為可讀性操心 67
3.44 本章小結(jié) 71
第4章 Slide Puzzle 72
4.1 如何玩Slide Puzzle 72
4.2 Slide Puzzle的源代碼 72
4.3 款游戲和款相同 80
4.4 設(shè)置按鈕 81
4.5 使用愚笨的代碼變聰明 83
4.6 主游戲循環(huán) 83
4.7 點(diǎn)擊按鈕 84
4.8 用鼠標(biāo)滑動貼片 85
4.9 用鍵盤滑動貼片 85
4.10 使用in操作符實(shí)現(xiàn)“等于其中
之一”的技巧 86
4.11 WASD和箭頭按鍵 86
4.12 實(shí)際執(zhí)行貼片滑動 87
4.13 IDLE和終止Pygame程序 87
4.14 檢查特定的事件并且將事件添加
到Pygame的事件隊列 88
4.15 創(chuàng)建游戲板數(shù)據(jù)結(jié)構(gòu) 89
4.16 不記錄空白的位置 89
4.17 通過更新游戲板數(shù)據(jù)結(jié)構(gòu)來
移動 90
4.18 何時不使用斷言 90
4.19 獲取一次并不是那么隨機(jī)的
移動 91
4.20 將貼片坐標(biāo)轉(zhuǎn)換為像素坐標(biāo) 92
4.21 將像素坐標(biāo)轉(zhuǎn)換為游戲板坐標(biāo) 92
4.22 繪制一個貼片 93
4.23 讓文本顯示在屏幕上 93
4.24 繪制游戲板 94
4.25 繪制游戲板的邊框 94
4.26 繪制按鈕 95
4.27 實(shí)現(xiàn)貼片滑動動畫 95
4.28 Surface的copy()方法 96
4.29 創(chuàng)建新的謎題 98
4.30 實(shí)現(xiàn)游戲板重置動畫 99
4.31 時間vs.內(nèi)存的權(quán)衡 100
4.32 沒人在乎幾個字節(jié) 101
4.33 沒人在乎幾百萬個納秒 101
4.34 本章小結(jié) 101
第5章 Simulate 102
5.1 如何玩Simulate游戲 102
5.2 Simulate的源代碼 102
5.3 常用初始內(nèi)容 108
5.4 設(shè)置按鈕 109
5.5 main()函數(shù) 110
5.6 程序中用到的一些局部變量 110
5.7 繪制游戲板并處理輸入 111
5.8 檢查鼠標(biāo)點(diǎn)擊 112
5.9 檢查鍵盤按下 112
5.10 游戲循環(huán)的兩種狀態(tài) 113
5.11 搞清楚玩家是否按下了正確的
按鈕 113
5.12 新紀(jì)元時間 115
5.13 將游戲板繪制到屏幕 116
5.14 相同的舊的terminate()函數(shù) 116
5.15 復(fù)用常量變量 117
5.16 實(shí)現(xiàn)按鈕閃爍動畫 117
5.17 繪制按鈕 120
5.18 實(shí)現(xiàn)背景顏色改變的動畫 120
5.19 游戲結(jié)束動畫 121
5.20 將像素坐標(biāo)轉(zhuǎn)換為按鈕 122
5.21 顯式比隱式好 123
第6章 Wormy 125
6.1 Wormy游戲的玩法 125
6.2 Wormy的源代碼 125
6.3 柵格 131
6.4 設(shè)置代碼 131
6.5 main()函數(shù) 132
6.6 單獨(dú)的runGame()函數(shù) 133
6.7 事件處理循環(huán) 134
6.8 碰撞檢測 134
6.9 檢測和蘋果的碰撞 135
6.10 移動蟲子 136
6.11 insert()列表方法 136
6.12 繪制屏幕 137
6.13 在屏幕上繪制“Press a key”
文本 137
6.14 checkForKeyPress()函數(shù) 137
6.15 初始屏幕 138
6.16 旋轉(zhuǎn)初始屏幕文本 139
6.17 旋轉(zhuǎn)并不 140
6.18 決定蘋果出現(xiàn)在哪里 141
6.19 游戲結(jié)束屏幕 141
6.20 繪制函數(shù) 142
6.21 不要復(fù)用變量名 144
第7章 Tetromino 146
7.1 一些Tetromino術(shù)語 146
7.2 Tetromino的源代碼 147
7.3 常用設(shè)置代碼 159
7.4 設(shè)置按下鍵的定時常量 159
7.5 更多的設(shè)置代碼 160
7.6 設(shè)置磚塊模式 161
7.7 將“一行代碼”分隔到多行 164
7.8 main()函數(shù) 165
7.9 開始新的游戲 166
7.10 游戲循環(huán) 167
7.11 事件處理循環(huán) 167
7.12 暫停游戲 167
7.13 使用移動變量來處理用戶輸入 168
7.14 檢查移動或旋轉(zhuǎn)是否有效 168
7.15 找到底部 171
7.16 通過按下按鍵來移動 172
7.17 讓磚塊“自然”落下 174
7.18 將所有內(nèi)容繪制到屏幕上 175
7.19 制作文本的快捷函數(shù)
makeTextObjs() 176
7.20 相同的舊的terminate()函數(shù) 176
7.21 使用checkForKeyPress()函數(shù)等
待按鍵事件 176
7.22 通用文本屏幕函數(shù)
showTextScreen() 177
7.23 checkForQuit()函數(shù) 178
7.24 calculateLevelAndFallFreq()
函數(shù) 178
7.25 用函數(shù)getNewPiece()產(chǎn)生新的
磚塊 180
7.26 給游戲板數(shù)據(jù)結(jié)構(gòu)添加磚塊 181
7.27 創(chuàng)建一個新的游戲板數(shù)據(jù)
結(jié)構(gòu) 181
7.28 isOnBoard()和isValidPosition()
函數(shù) 182
7.29 檢查、刪除和填滿一行 184
7.30 將游戲板坐標(biāo)轉(zhuǎn)換為像素坐標(biāo) 186
7.31 在游戲板上或屏幕上的其他位置
繪制方塊 187
7.32 將所有內(nèi)容繪制到屏幕上 187
7.33 繪制得分和關(guān)卡文本 188
7.34 在游戲板上或屏幕的其他位置
繪制一個磚塊 188
7.35 繪制“Next”磚塊 189
7.36 本章小結(jié) 189
第8章 Squirrel Eat Squirrel 191
8.1 如何玩Squirrel Eat Squirrel 191
8.2 Squirrel Eat Squirrel的設(shè)計 191
8.3 Squirrel Eat Squirrel的源代碼 192
8.4 常用設(shè)置代碼 202
8.5 描述數(shù)據(jù)結(jié)構(gòu) 203
8.6 main()函數(shù) 204
8.7 pygame.transform.flip()函數(shù) 205
8.8 更為詳細(xì)的游戲狀態(tài) 205
8.9 常用的文本創(chuàng)建代碼 206
8.10 相機(jī) 206
8.11 “活動區(qū)域” 208
8.12 記錄游戲世界中的物體的位置 208
8.13 從一些草開始 209
8.14 游戲循環(huán) 209
8.15 檢查去掉保護(hù)狀態(tài) 209
8.16 移動敵人松鼠 210
8.17 刪除較遠(yuǎn)的草對象和松鼠
對象 211
8.18 當(dāng)從列表中刪除項(xiàng)的時候,
反向遍歷列表 211
8.19 添加新的草對象和松鼠對象 213
8.20 相機(jī)延遲以及移動相機(jī)視圖 213
8.21 繪制背景、草、松鼠和生命值
指示 214
8.22 事件處理循環(huán) 216
8.23 移動玩家并考慮跳動 218
8.24 碰撞檢測:吃或被吃 219
8.25 游戲結(jié)束屏幕 221
8.26 獲勝 221
8.27 繪制圖形化的生命值指標(biāo) 221
8.28 相同的舊的terminate()函數(shù) 222
8.29 正弦函數(shù) 222
8.30 對Python 2的向后兼容 225
8.31 getRandomVelocity()函數(shù) 226
8.32 找到一個地方添加新的松鼠
和草 226
8.33 創(chuàng)建敵人松鼠數(shù)據(jù)結(jié)構(gòu) 228
8.34 翻轉(zhuǎn)松鼠圖像 228
8.35 創(chuàng)建草數(shù)據(jù)結(jié)構(gòu) 229
8.36 檢查是否在活動區(qū)域之外 229
8.37 本章小結(jié) 230
第9章 Star Pusher 231
9.1 如何玩Star Pusher 231
9.2 Star Pusher的源代碼 232
9.3 初始化設(shè)置 245
9.4 Star Pusher中的數(shù)據(jù)結(jié)構(gòu) 259
9.5 讀取和寫入文本文件 260
9.6 遞歸函數(shù) 268
9.7 棧溢出 269
9.8 使用基本條件防止棧溢出 271
9.9 漫水填充算法 271
9.10 繪制地圖 273
9.11 檢查關(guān)卡是否完成 275
9.12 本章小結(jié) 276
第10章 4款其他游戲 277
10.1 Flippy,Othello的翻版 277
10.2 Flippy的源代碼 279
10.3 Ink Spill,F(xiàn)lood It游戲的
翻版 291
10.4 Ink Spill的源代碼 292
10.5 Four-In-A-Row,Connect Four
的翻版 303
10.6 Four-In-A-Row的源代碼 304
10.7 Gemgem,Bejeweled的翻版 312
10.8 Gemgem的源代碼 313
10.9 本章小結(jié) 326
術(shù)語表 328