産品特色
編輯推薦
本書作者在國外發布英文版後,受到普遍歡迎和很好的評價。
本書通過詳細分析11款示例遊戲的源代碼,介紹Pygame庫的用法。寓教於樂,輕鬆有趣。
本書所涉及的11款示例遊戲,是諸如Nibbles、Tetris、Simon、Bejeweled、Othello、Connect Four、Flood It等經典遊戲的翻版。
本書的Web站點http://inventwithpython.com/pygame,提供源代碼下載等更多資源。
內容簡介
Python語言和Pygame都是開發圖形化的計算機遊戲的得力工具。Pygame使得開發2D圖形程序變得很容易,而且它可以免費下載和安裝使用。
本書是一本中級編程圖書。本書教你如何用Python語言和Pygame庫,來編寫圖形化的計算機遊戲。本書共包括10章。本書首先從Python和Pygame基礎知識開始,簡短地介紹瞭Pygame庫是如何工作的,以及它提供瞭哪些功能。然後,結閤7款不同的遊戲實例的開發過程,詳細介紹瞭應用的技能和技巧。本書針對一些真實的遊戲給齣瞭完整的源代碼,並且詳細說明瞭這些代碼如何工作,以便你能夠理解真正的遊戲是如何使用Pygame的。
本書適閤有一定Python基礎知識的讀者閱讀和學習,進而掌握基本的遊戲開發知識和技能,對於Python初學者來說,本書也可以作為通過遊戲學習Python開發的實踐教程。
作者簡介
Al Sweigart是加利福尼亞州舊金山的一名軟件開發者。他很喜歡騎自行車、當誌願者、泡咖啡吧以及製作有用的軟件。《Making Games with Python & Pygame》是他編寫的第二本書。他的另一本書是《Invent Your Own Computer Games with Python》。他生於德剋薩斯的休斯頓。他在德剋薩斯大學Austin分校讀完瞭計算機科學學位。
目錄
第1章 安裝Python和Pygame 1
1.1 預備知識 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 配套網站上的更多信息 6
第2章 Pygame基礎知識 7
2.1 GUI vs. CLI 7
2.2 使用Pygame的Hello World程序
源代碼 7
2.3 建立一個Pygame程序 8
2.4 遊戲循環和遊戲狀態 10
2.5 pygame.event.Event對象 11
2.6 QUIT事件和pygame.quit()
函數 12
2.7 像素坐標 13
2.8 關於函數、方法、構造函數和
模塊中的函數(及其差彆)的
一些提示 13
2.9 Surface對象和窗口 14
2.10 顔色 15
2.11 顔色的透明度 16
2.12 pygame.Color對象 17
2.13 Rect對象 17
2.14 基本的繪製函數 19
2.15 pygame.PixelArray對象 22
2.16 pygame.display.update()函數 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 本章小結 29
第3章 Memory Puzzle遊戲 31
3.1 如何玩Memory Puzzle遊戲 31
3.2 嵌套的for循環 31
3.3 Memory Puzzle的源代碼 33
3.4 聲明和導入 40
3.5 幻數很糟糕 40
3.6 使用assert語句全麵檢查 41
3.7 判斷一個數字是偶數還是奇數 42
3.8 較早崩潰和經常崩潰 42
3.9 讓源代碼更好看一些 43
3.10 使用常量變量而不是字符串 44
3.11 確保有足夠的圖標 44
3.12 元組vs.列錶,不可變vs.可變 45
3.13 單項元組需要一個結尾的逗號 46
3.14 在列錶和元組之間轉換 46
3.15 global語句以及為什麼全局變量
是罪惡的 47
3.16 數據結構和2D列錶 48
3.17 “開始遊戲”動畫 49
3.18 遊戲循環 50
3.19 事件處理循環 50
3.20 檢查鼠標光標在哪一個方塊
之上 51
3.21 處理第一次點擊的方塊 52
3.22 處理不一緻的一對圖標 53
3.23 處理玩傢獲勝 53
3.24 將遊戲狀態繪製到屏幕 54
3.25 創建“揭開的方塊”數據結構 55
3.26 創建遊戲闆數據結構:第1步—獲取所有可能的圖標 55
3.27 第2步—打亂並截取所有圖標
的列錶 56
3.28 第3步—將圖標放置到遊戲
闆上 56
3.29 將一個列錶分割為列錶的
列錶 57
3.30 不同的坐標係 58
3.31 從像素坐標轉換為方塊坐標 59
3.32 繪製圖標以及語法糖 59
3.33 獲取遊戲闆控件的圖標的形狀和
顔色的語法糖 61
3.34 繪製蓋住的方塊 61
3.35 處理揭開和覆蓋動畫 62
3.36 繪製整個遊戲闆 63
3.37 繪製高亮邊框 63
3.38 “開始遊戲”動畫 64
3.39 揭開和蓋住成組的方塊 64
3.40 “遊戲獲勝”動畫 65
3.41 判斷玩傢是否已經獲勝 65
3.42 為何要那麼麻煩地使用main()
函數 66
3.43 為什麼要為可讀性操心 67
3.44 本章小結 71
第4章 Slide Puzzle 72
4.1 如何玩Slide Puzzle 72
4.2 Slide Puzzle的源代碼 72
4.3 第二款遊戲和第一款相同 80
4.4 設置按鈕 81
4.5 使用愚笨的代碼變聰明 83
4.6 主遊戲循環 83
4.7 點擊按鈕 84
4.8 用鼠標滑動貼片 85
4.9 用鍵盤滑動貼片 85
4.10 使用in操作符實現“等於其中
之一”的技巧 86
4.11 WASD和箭頭按鍵 86
4.12 實際執行貼片滑動 87
4.13 IDLE和終止Pygame程序 87
4.14 檢查特定的事件並且將事件添加
到Pygame的事件隊列 88
4.15 創建遊戲闆數據結構 89
4.16 不記錄空白的位置 89
4.17 通過更新遊戲闆數據結構來
移動 90
4.18 何時不使用斷言 90
4.19 獲取一次並不是那麼隨機的
移動 91
4.20 將貼片坐標轉換為像素坐標 92
4.21 將像素坐標轉換為遊戲闆坐標 92
4.22 繪製一個貼片 93
4.23 讓文本顯示在屏幕上 93
4.24 繪製遊戲闆 94
4.25 繪製遊戲闆的邊框 94
4.26 繪製按鈕 95
4.27 實現貼片滑動動畫 95
4.28 Surface的copy()方法 96
4.29 創建新的謎題 98
4.30 實現遊戲闆重置動畫 99
4.31 時間vs.內存的權衡 100
4.32 沒人在乎幾個字節 101
4.33 沒人在乎幾百萬個納秒 101
4.34 本章小結 101
第5章 Simulate 102
5.1 如何玩Simulate遊戲 102
5.2 Simulate的源代碼 102
5.3 常用初始內容 108
5.4 設置按鈕 109
5.5 main()函數 110
5.6 程序中用到的一些局部變量 110
5.7 繪製遊戲闆並處理輸入 111
5.8 檢查鼠標點擊 112
5.9 檢查鍵盤按下 112
5.10 遊戲循環的兩種狀態 113
5.11 搞清楚玩傢是否按下瞭正確的
按鈕 113
5.12 新紀元時間 115
5.13 將遊戲闆繪製到屏幕 116
5.14 相同的舊的terminate()函數 116
5.15 復用常量變量 117
5.16 實現按鈕閃爍動畫 117
5.17 繪製按鈕 120
5.18 實現背景顔色改變的動畫 120
5.19 遊戲結束動畫 121
5.20 將像素坐標轉換為按鈕 122
5.21 顯式比隱式好 123
第6章 Wormy 125
6.1 Wormy遊戲的玩法 125
6.2 Wormy的源代碼 125
6.3 柵格 131
6.4 設置代碼 131
6.5 main()函數 132
6.6 單獨的runGame()函數 133
6.7 事件處理循環 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()函數 137
6.15 初始屏幕 138
6.16 鏇轉初始屏幕文本 139
6.17 鏇轉並不完美 140
6.18 決定蘋果齣現在哪裏 141
6.19 遊戲結束屏幕 141
6.20 繪製函數 142
6.21 不要復用變量名 144
第7章 Tetromino 146
7.1 一些Tetromino術語 146
7.2 Tetromino的源代碼 147
7.3 常用設置代碼 159
7.4 設置按下鍵的定時常量 159
7.5 更多的設置代碼 160
7.6 設置磚塊模式 161
7.7 將“一行代碼”分隔到多行 164
7.8 main()函數 165
7.9 開始新的遊戲 166
7.10 遊戲循環 167
7.11 事件處理循環 167
7.12 暫停遊戲 167
7.13 使用移動變量來處理用戶輸入 168
7.14 檢查移動或鏇轉是否有效 168
7.15 找到底部 171
7.16 通過按下按鍵來移動 172
7.17 讓磚塊“自然”落下 174
7.18 將所有內容繪製到屏幕上 175
7.19 製作文本的快捷函數
makeTextObjs() 176
7.20 相同的舊的terminate()函數 176
7.21 使用checkForKeyPress()函數等
待按鍵事件 176
7.22 通用文本屏幕函數
showTextScreen() 177
7.23 checkForQuit()函數 178
7.24 calculateLevelAndFallFreq()
函數 178
7.25 用函數getNewPiece()産生新的
磚塊 180
7.26 給遊戲闆數據結構添加磚塊 181
7.27 創建一個新的遊戲闆數據
結構 181
7.28 isOnBoard()和isValidPosition()
函數 182
7.29 檢查、刪除和填滿一行 184
7.30 將遊戲闆坐標轉換為像素坐標 186
7.31 在遊戲闆上或屏幕上的其他位置
繪製方塊 187
7.32 將所有內容繪製到屏幕上 187
7.33 繪製得分和關卡文本 188
7.34 在遊戲闆上或屏幕的其他位置
繪製一個磚塊 188
7.35 繪製“Next”磚塊 189
7.36 本章小結 189
第8章 Squirrel Eat Squirrel 191
8.1 如何玩Squirrel Eat Squirrel 191
8.2 Squirrel Eat Squirrel的設計 191
8.3 Squirrel Eat Squirrel的源代碼 192
8.4 常用設置代碼 202
8.5 描述數據結構 203
8.6 main()函數 204
8.7 pygame.transform.flip()函數 205
8.8 更為詳細的遊戲狀態 205
8.9 常用的文本創建代碼 206
8.10 相機 206
8.11 “活動區域” 208
8.12 記錄遊戲世界中的物體的位置 208
8.13 從一些草開始 209
8.14 遊戲循環 209
8.15 檢查去掉保護狀態 209
8.16 移動敵人鬆鼠 210
8.17 刪除較遠的草對象和鬆鼠
對象 211
8.18 當從列錶中刪除項的時候,
反嚮遍曆列錶 211
8.19 添加新的草對象和鬆鼠對象 213
8.20 相機延遲以及移動相機視圖 213
8.21 繪製背景、草、鬆鼠和生命值
指示 214
8.22 事件處理循環 216
8.23 移動玩傢並考慮跳動 218
8.24 碰撞檢測:吃或被吃 219
8.25 遊戲結束屏幕 221
8.26 獲勝 221
8.27 繪製圖形化的生命值指標 221
8.28 相同的舊的terminate()函數 222
8.29 正弦函數 222
8.30 對Python 2的嚮後兼容 225
8.31 getRandomVelocity()函數 226
8.32 找到一個地方添加新的鬆鼠
和草 226
8.33 創建敵人鬆鼠數據結構 228
8.34 翻轉鬆鼠圖像 228
8.35 創建草數據結構 229
8.36 檢查是否在活動區域之外 229
8.37 本章小結 230
第9章 Star Pusher 231
9.1 如何玩Star Pusher 231
9.2 Star Pusher的源代碼 232
9.3 初始化設置 245
9.4 Star Pusher中的數據結構 259
9.5 讀取和寫入文本文件 260
9.6 遞歸函數 268
9.7 棧溢齣 269
9.8 使用基本條件防止棧溢齣 271
9.9 漫水填充算法 271
9.10 繪製地圖 273
9.11 檢查關卡是否完成 275
9.12 本章小結 276
第10章 4款其他遊戲 277
10.1 Flippy,Othello的翻版 277
10.2 Flippy的源代碼 279
10.3 Ink Spill,Flood 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 本章小結 326
術語錶 328
前言/序言
Python和Pygame遊戲開發指南 下載 mobi epub pdf txt 電子書 格式