作 者:(美)斯維加特 著 李強 譯
定 價:69.9
出 版 社:人民郵電出版社
出版日期:2015年12月01日
頁 數:344
裝 幀:平裝
ISBN:9787115407351
本書作者在國外發布英文版後,受到普遍歡迎和很好的評價。本書通過詳細分析11款示例遊戲的源代碼,介紹Pygame庫的用法。寓教於樂,輕松有趣。本書所涉及的11款示例遊戲,是諸如Nibbles、Tetris、Simon、Bejeweled、Othello、Connect Four、Flood It等遊戲的翻版。本書的We點http://inventwithpython.com/pygame,提供源代碼下載等更多資源。
●第1章安裝Python和Pygame1
1.1預備知識1
1.2下載和安裝Python1
1.3Windows下的安裝說明1
1.4MacOSX上的安裝說明2
1.5Ubuntu和Linux上的安裝說明2
1.6啟動Python2
1.7安裝Pygame3
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.1GUIvs.CLI7
2.2使用Pygame的HelloWorld程序源代碼7
2.3建立一個Pygame程序8
2.4遊戲循環和遊戲狀態10
2.5pygame.event.Event對像11
2.6QUIT事件和pygame.quit()函數12
2.7像素坐標13
2.8關於函數、方法、構造函數和模塊中的函數(及其差別)的一些提示13
2.9Surface對像和窗口14
2.10顏色15
2.11顏色的透明度16
2.12pygame.Color對像17
2.13Rect對像17
2.14基本的繪制函數19
2.15pygame.PixelArray對像22
2.16pygame.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章MemoryPuzzle遊戲31
3.1如何玩MemoryPuzzle遊戲31
3.2嵌套的for循環31
3.3MemoryPuzzle的源代碼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組vs.列表,不可變vs.可變45
3.1組需要一個結尾的逗號46
3.14在組之間轉換46
3.15global語句以及為什麼全局變量是罪惡的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章SlidePuzzle72
4.1如何玩SlidePuzzle72
4.2SlidePuzzle的源代碼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.11WASD和箭頭按鍵86
4.12實際執行貼片滑動87
4.13IDLE和終止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.28Surface的copy()方法96
4.29創建新的謎題98
4.30實現遊戲板重置動畫99
4.31時間vs.內存的權衡100
4.32沒人在乎幾個字節101
4.33沒人在乎幾百萬個納秒101
4.34本章小結101
第5章Simulate102
5.1如何玩Simulate遊戲102
5.2Simulate的源代碼102
5.3常用初始內容108
5.4設置按鈕109
5.5main()函數110
5.6程序中用到的一些局部變量110
5.7繪制遊戲板並處理輸入111
5.8檢查鼠標點擊112
5.9檢查鍵盤按下112
5.10遊戲循環的兩種狀態113
5.11搞清楚玩家是否按下了正確的按鈕113
5.1時間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章Wormy125
6.1Wormy遊戲的玩法125
6.2Wormy的源代碼125
6.3柵格131
6.4設置代碼131
6.5main()函數132
6.6單獨的runGame()函數133
6.7事件處理循環134
6.8踫撞檢測134
6.9檢測和蘋果的踫撞135
6.10移動蟲子136
6.11insert()列表方法136
6.12繪制屏幕137
6.13在屏幕上繪制“Pressakey”文本137
6.14checkForKeyPress()函數137
6.15初始屏幕138
6.16旋轉初始屏幕文本139
6.17旋轉並不完美140
6.18決定蘋果出現在哪裡141
6.19遊戲結束屏幕141
6.20繪制函數142
6.21不要復用變量名144
第7章Tetromino146
7.1一些Tetromino術語146
7.2Tetromino的源代碼147
7.3常用設置代碼159
7.4設置按下鍵的定時常量159
7.5更多的設置代碼160
7.6設置磚塊模式161
7.7將“一行代碼”分隔到多行164
7.8main()函數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.23checkForQuit()函數178
7.24calculateLevelAndFallFreq()函數178
7.25用函數getNewPiece()產生新的磚塊180
7.26給遊戲板數據結構添加磚塊181
7.27創建一個新的遊戲板數據結構181
7.28isOnBoard()和isValid ition()函數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章SquirrelEatSquirrel191
8.1如何玩SquirrelEatSquirrel191
8.2SquirrelEatSquirrel的設計191
8.3SquirrelEatSquirrel的源代碼192
8.4常用設置代碼202
8.5描述數據結構203
8.6main()函數204
8.7pygame.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對Python2的向後兼容225
8.31getRandomVelocity()函數226
8.32找到一個地方添加新的松鼠和草226
8.33創建敵人松鼠數據結構228
8.34翻轉松鼠圖像228
8.35創建草數據結構229
8.36檢查是否在活動區域之外229
8.37本章小結230
第9章StarPusher231
9.1如何玩StarPusher231
9.2StarPusher的源代碼232
9.3初始化設置245
9.4StarPusher中的數據結構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.1Flippy,Othello的翻版277
10.2Flippy的源代碼279
10.3InkSpill,FloodIt遊戲的翻版291
10.4InkSpill的源代碼292
10.5Four-In-A-Row,ConnectFour的翻版303
10.6Four-In-A-Row的源代碼304
10.7Gemgem,Bejeweled的翻版312
10.8Gemgem的源代碼313
10.9本章小結326
術語表328
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分校讀完了計算機科學學位。