《Python遊戲編程快速上手(第4版)》是2020年3月人民郵電出版社出版的圖書,作者是[美]Al Sweigart(斯維加特)。
基本介紹
- 書名:Python遊戲編程快速上手(第4版)
- 作者:[美]Al Sweigart(斯維加特)
- ISBN:9787115466419
- 頁數:310頁
- 定價:69元
- 出版社:人民郵電出版社
- 出版時間:2020年3月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
Python是一種高 級程式設計語言,因其簡潔、易讀及可擴展性日漸成為程式設計領域備受推崇的語言。
本書通過編寫一個個小巧、有趣的遊戲來教授Python編程,並且採用直接展示遊戲的原始碼並通過實例來解釋編程的原理的方式。全書共21章,12個遊戲程式和示例貫穿其中,介紹了Python基礎知識、數據類型、函式轎仔轎嬸、流程控制、程式調試、流程付巴腿圖設計、字元串操作、列表和字典、笛卡爾坐標系、密碼學基礎、遊戲AI模擬、動畫圖形、碰撞檢測凝碑籃、聲音和圖像等方方面面的程式設計知識。本書可以幫助讀者在輕鬆有趣的過程中,掌握Python遊戲編程的基本技能。
本書適合不同年齡和層次的Python編程初學者閱讀。
圖書目錄
第 1章 互動式Shell 1
1.1 一些簡單的數學知識 1
1.1.1 整數和浮點數 2
1.1.2 表達式 2
1.2 計算表達式 3
1.3 語法錯誤 4
1.4 在變數中存儲值 4
1.5 小結 8
第 2章 編寫程式 9
2.1 字元串值囑轎 10
2.2 連線字元串 10
2.3 在IDLE的檔案編輯器中
編寫程式 11
2.3.1 創建Hello World程式 11
2.3.2 保存程式 12
2.3.3 運行程式 13
2.4 Hello World程式如何工作 14
2.4.1 注釋 15
2.4.2 函式汗燥櫻:程式中的小程式 15
2.4.3 終止程式 16
2.5 命名變數 16
2.6 小結 17
第3章 “猜數字”遊戲 19
3.1 “猜數字”的運行示例 20
3.2 “猜數字”程式的原始碼 20
3.3 導入random模組 21
3.4 用random.randint()函式
生成隨機數 22
3.5 歡迎玩家 23
3.6 流程控制語句 23
3.6.1 使用循環來重複代碼 23
3.6.2 組織語句塊 24
3.6.3 for循環語句 25
3.7 玩家的猜測 26
3.8 使用int()函式、float()函式、str()
函式和bool()函式來轉換值 26
3.9 布爾數據類型 28
3.9.1 比較操作符 28
3.9.2 用條件檢查True或
False 29
3.9.3 體驗布爾值、比較操作符
和條件 29
3.9.4 =和==的區別 30
3.10 if語句 30
3.11 用break語句提早離開循環 31
3.12 判斷玩家是否贏了 31
3.13 判斷玩家是否輸了 32
3.14 小結 32
第4章 一個講笑話程式 35
4.1 Jokes遊戲的運行示例 35
4.2 Jokes遊戲的原始碼 36
4.3 代碼如何工作 36
4.4 轉義字元 37
4.5 單引號和雙引號 38
4.6 print()的end關鍵字形參 39
4.7 小結 39
第5章 Dragon Realm 41
5.1 如何玩Dragon Realm 41
5.2 Dragon Realm的運行示例 42
5.3 Dragon Realm的流程圖 42
5.4 Dragon Realm的白櫻樂符原始碼 43
5.5 導入random和time模組 44
5.6 Dragon Realm中的函式 44
5.6.1 def語句 45
5.6.2 調用函式 45
5.6.3 把函式定義放在哪裡 45
5.7 多行字元串 46
5.8 while語句實現循環 46
5.9 布爾操作符 47
5.9.1 and操作符 47
5.9.2 or操作符 48
5.9.3 not操作符 49
5.9.4 布爾操作符的運算 49
5.10 返回值 50
5.11 全局作用域和局部作用域 51
5.12 函式形參 52
5.13 顯示遊戲結果 53
5.14 決定哪個山洞有友善的龍 53
5.15 遊戲循環 54
5.15.1 在程式中調用函式 55
5.15.2 詢問玩家要不要再玩
一局 55
5.16 小結 56
第6章 使用調試器 57
6.1 Bug的類型 57
6.2 調試器 58
6.2.1 啟動調試器 59
6.2.2 用調試器單步執行程式 60
6.3 查找Bug 63
6.4 設定斷點 65
6.5 使用斷點 66
6.6 小結 68
第7章 用流程圖設計Hangman 69
7.1 如何玩Hangman 69
7.2 Hangman的運行示例 70
7.3 ASCII字元圖 71
7.4 用流程圖來設計一個程式 71
7.4.1 生成流腿格遙程圖 72
7.4.2 流程圖的分支 73
7.4.3 結束或者重新開始遊戲 74
7.4.4 再猜一次 75
7.4.5 為玩家提供反饋 77
7.5 小結 78
第8章 編寫Hangman的代碼 79
8.1 Hangman的原始碼 79
8.2 導入random模組 82
8.3 常量 82
8.4 列表數據類型 83
8.4.1 用索引訪問元素 83
8.4.2 列表連線 84
8.4.3 in操作符 85
8.5 調用方法 85
8.5.1 列表方法reverse()和
append() 86
8.5.2 字元串方法split() 86
8.6 從單詞列表中獲取一個神秘
單詞 87
8.7 向玩家顯示遊戲板 87
8.7.1 list()函式和range()函式 88
8.7.2 列表和字元串分片 89
8.7.3 用空格表示神秘單詞 90
8.8 獲取玩家的猜測 91
8.8.1 字元串方法lower()和
upper() 92
8.8.2 離開while循環 93
8.9 elif語句 93
8.10 確保玩家輸入一個有效的
猜測 94
8.11 詢問玩家是否想再玩一局 94
8.12 回顧Hangman中的函式 95
8.13 遊戲循環 96
8.13.1 調用displayBoard()函式 96
8.13.2 讓玩家輸入他們的猜測 96
8.13.3 判斷字母是否在這個
神秘單詞中 97
8.13.4 判斷玩家是否獲勝 97
8.13.5 當玩家猜錯時 97
8.13.6 檢查玩家是否輸了 98
8.13.7 結束並重新設定遊戲 98
8.14 小結 99
第9章 Hangman擴展 101
9.1 添加更多的猜測機會 101
9.2 字典數據類型 102
9.2.1 用len()函式獲取字典的
大小 103
9.2.2 字典和列表的區別 103
9.2.3 字典方法keys()和
values() 104
9.2.4 在Hangman中使用單詞的
字典 104
9.3 從一個列表中隨機選取 105
9.4 從列表中刪除項 106
9.5 多變數賦值 107
9.6 向玩家顯示單詞的分類 108
9.7 小結 109
第 10章 Tic Tac Toe 111
10.1 Tic Tac Toe的運行示例 112
10.2 Tic Tac Toe的原始碼 113
10.3 設計程式 116
10.3.1 用數據表示遊戲板 117
10.3.2 遊戲AI 117
10.4 導入random模組 119
10.5 在螢幕上列印遊戲板 119
10.6 讓玩家來選擇X或O 120
10.7 決定誰先走 121
10.8 在遊戲板上放置一個標記 121
10.8.1 列表引用 121
10.8.2 在makeMove()中使用
列表引用 124
10.9 判斷玩家是否獲勝 125
10.10 複製遊戲板的數據 126
10.11 判斷遊戲板上的格子是否
為空 127
10.12 讓玩家輸入他們的落子 127
10.13 短路求值 128
10.14 從落子列表中選擇一個
落子 130
10.15 None值 130
10.16 創建計算機的AI 131
10.16.1 計算機判斷自己能否
落子即獲勝 132
10.16.2 計算機判斷玩家是否
可以落子即獲勝 132
10.16.3 依次判斷角、中心
和邊 133
10.16.4 判斷遊戲板是否滿了 133
10.17 遊戲循環 134
10.17.1 決定玩家的符號和
誰先走 134
10.17.2 運行玩家的輪次 134
10.17.3 運行計算機的輪次 135
10.17.4 詢問玩家是否再玩
一次 136
10.18 小結 136
第 11章 推理遊戲Bagels 137
11.1 Bagels的運行示例 138
11.2 Bagels的原始碼 138
11.3 Bagels的流程圖 140
11.4 導入random並定義
getSecretNum() 140
11.5 打亂一組唯 一數的順序 141
11.5.1 用random.shuffle()函式改變
列表項的順序 141
11.5.2 從打亂次序的數中獲取神秘
數字 142
11.6 複合賦值操作符 142
11.7 計算要給出的線索 143
11.8 列表方法sort() 144
11.9 字元串方法join() 145
11.10 檢查字元串中是否只包含
數字 145
11.11 遊戲的開始 146
11.12 字元串插值 146
11.13 遊戲循環 147
11.13.1 獲取玩家的猜測 147
11.13.2 根據玩家的猜測給出
線索 148
11.13.3 判斷玩家的輸贏 148
11.13.4 詢問玩家是否再玩
一局 148
11.14 小結 149
第 12章 笛卡爾坐標 151
12.1 格線和笛卡爾坐標 151
12.2 負數 153
12.3 計算機螢幕的坐標系 154
12.4 數學技巧 155
12.4.1 技巧1:減號吃掉它左邊
的加號 155
12.4.2 技巧2:兩個減號合併為
一個加號 155
12.4.3 技巧3:加法的可
交換性 156
12.5 絕 對值和abs()函式 156
12.6 小結 157
第 13章 Sonar Treasure Hunt遊戲 159
13.1 Sonar Treasure Hunt的運行
示例 160
13.2 Sonar Treasure Hunt的源
代碼 162
13.3 設計程式 167
13.4 導入random、sys和math
模組 167
13.5 創建一個新的遊戲板 167
13.6 繪製遊戲板 168
13.6.1 在頂部繪製X軸 169
13.6.2 繪製海洋 170
13.6.3 列印出海洋中的行 170
13.6.4 在遊戲板底部繪製X軸
坐標 171
13.7 創建隨機的藏寶箱 171
13.8 判斷一次移動是否有效 172
13.9 在遊戲板上進行一次移動 172
13.9.1 找到近的藏寶箱的
算法 172
13.9.2 使用列表方法remove()
刪除值 175
13.9.3 獲取玩家的移動 176
13.10 為玩家列印出遊戲說明 177
13.11 遊戲循環 177
13.11.1 為玩家顯示遊戲的
狀態 179
13.11.2 處理玩家的移動 179
13.11.3 找到一個沉沒的
藏寶箱 179
13.11.4 判斷玩家是否贏了 180
13.11.5 判斷玩家是否輸了 180
13.11.6 用sys.exit()函式終止
程式 181
13.12 小結 181
第 14章 凱撒密碼 183
14.1 密碼學和加密 184
14.2 凱撒密碼簡介 184
14.3 凱撒密碼的運行示例 185
14.4 凱撒密碼程式的原始碼 186
14.6 決定加密還是解密 187
14.7 從玩家處得到訊息 188
14.8 從玩家處得到密鑰 188
14.9 加密或解密訊息 188
14.9.1 使用字元串方法find()
找到所傳遞的字元串 189
14.9.2 加密或解密每個字母 190
14.10 程式開始 191
14.11 暴力破解 191
14.12 添加暴力破解模式 192
14.13 小結 193
第 15章 Reversegam遊戲 195
15.1 如何玩Reversegam 195
15.2 Reversegam的運行示例 198
15.3 Reversegam的原始碼 200
15.4 導入模組和設定常量 205
15.5 遊戲板數據結構 205
15.5.1 在螢幕上繪製遊戲板數據
結構 205
15.5.2 創建一個新的遊戲板數據
結構 206
15.6 判斷一次落子是否有效 207
15.6.1 查看8個方向中的每一個
方向 208
15.6.2 發現是否有可以反轉的
棋子 209
15.7 判斷有效的坐標 210
15.7.1 得到所有有效移動的一個
列表 210
15.7.2 調用bool()函式 211
15.8 計算遊戲板的得分 212
15.9 獲取玩家的棋子選擇 212
15.10 決定誰先走 213
15.11 在遊戲板上落下一個棋子 213
15.12 複製遊戲板數據結構 214
15.13 判斷一個格子是否在
角落上 214
15.14 獲取玩家的移動 214
15.15 獲取計算機的移動 216
15.15.1 角落移動策略 216
15.15.2 獲取高得分的移動的列表 217
15.16 在螢幕上列印分數 218
15.17 遊戲開始 218
15.17.1 檢查僵局 218
15.17.2 運行玩家的輪次 219
15.17.3 運行計算機的輪次 220
15.18 遊戲循環 221
15.19 詢問玩家是否再玩一局 222
15.20 小結 222
第 16章 Reversegam AI模擬 223
16.1 讓計算機和自己下棋 224
16.1.1 模擬程式1的運行
示例 224
16.1.2 模擬程式1的原始碼 225
16.1.3 刪除玩家提示並添加一個
計算機玩家 226
16.2 讓計算機自己多玩幾次 227
16.2.1 模擬程式2的運行
示例 227
16.2.2 模擬程式2的原始碼 227
16.2.3 記錄多次遊戲 228
16.2.4 注釋掉print()函式
調用 229
16.2.5 使用百分數評級AI 229
16.3 比較不同的AI算法 231
16.3.1 模擬程式3的原始碼 231
16.3.2 模擬程式3的AI是
如何工作的 232
16.3.3 比較AI 235
16.4 小結 237
第 17章 創建圖形 239
17.1 安裝pygame 240
17.2 pygame中的Hello World 240
17.3 運行pygame Hello World程式的
示例 240
17.4 pygame Hello World的
原始碼 241
17.5 導入pygame模組 242
17.6 初始化pygame 243
17.7 設定pygame視窗 243
17.7.1 元組 243
17.7.2 Surface對象 244
17.8 設定顏色變數 244
17.9 將文本寫到pygame視窗上 245
17.9.1 使用字型來樣式化
文本 245
17.9.2 渲染一個Font對象 246
17.9.3 使用Rect屬性設定文本
位置 247
17.10 用一種顏色填充一個Surface
對象 248
17.11 pygame的繪製函式 249
17.11.1 繪製一個多邊形 249
17.11.2 繪製直線 250
17.11.3 繪製圓形 250
17.11.4 繪製橢圓形 251
17.11.5 繪製矩形 251
17.11.6 給像素著色 252
17.12 Surface對象的blit()方法 252
17.13 將Surface對象繪製到
螢幕上 253
17.14 事件和遊戲循環 253
17.14.1 獲取事件對象 253
17.14.2 退出程式 254
17.15 小結 254
第 18章 動畫圖形 255
18.1 Animation程式的運行示例 255
18.2 Animation程式的原始碼 256
18.3 讓積木移動和彈回 258
18.4 設定常量變數 258
18.4.1 用於方向的常量變數 259
18.4.2 用於顏色的常量變數 260
18.5 設定積木數據結構 260
18.6 遊戲循環 260
18.6.1 處理玩家退出的情況 261
18.6.2 移動每一個積木 261
18.6.3 彈跳一個積木 262
18.6.4 將積木繪製到視窗中
新的位置 263
18.6.5 在螢幕上繪製視窗 264
18.7 小結 264
第 19章 碰撞檢測 265
19.1 碰撞檢測程式的運行示例 266
19.2 Collision Detection程式的
原始碼 266
19.3 導入模組 268
19.4 使用一個時鐘來同步程式 268
19.5 創建視窗和數據結構 269
19.6 設定變數以記錄移動 270
19.7 處理事件 270
19.7.1 處理KEYDOWN事件 271
19.7.2 處理KEYUP事件 273
19.8 轉移玩家 274
19.9 添加新的食物方塊 274
19.10 在螢幕上移動玩家 275
19.10.1 將玩家繪製到螢幕上 275
19.10.2 檢查碰撞 276
19.11 在視窗上繪製食物方塊 276
19.12 小結 277
第 20章 聲音和圖像 279
20.1 使用精靈添加圖像 279
20.2 聲音檔案和圖像檔案 280
20.3 Sprites and Sounds程式的
運行示例 281
20.4 Sprites and Sounds程式的
原始碼 281
20.5 創建視窗和數據結構 284
20.5.1 添加一個精靈 284
20.5.2 改變一個精靈的大小 284
20.6 創建音樂和聲音 285
20.6.1 添加聲音檔案 285
20.6.2 切換和關閉聲音 285
20.7 把玩家繪製到視窗上 286
20.8 檢查碰撞 286
20.9 在視窗中繪製櫻桃 287
20.10 小結 287
第 21章 帶有聲音和圖像的Dodger 289
21.1 回顧pygame的基本數據
類型 289
21.2 Dodger的運行示例 290
21.3 Dodger的原始碼 291
21.4 導入模組 295
21.5 創建常量 295
21.6 定義函式 296
21.6.1 終止和暫停遊戲 296
21.6.2 記錄和敵人的碰撞 297
21.6.3 將文本繪製到視窗 297
21.7 初始化pygame並設定視窗 298
21.8 設定Font、Sound和Image
對象 299
21.9 顯示開始界面 300
21.10 開始遊戲 300
21.11 遊戲循環 302
21.11.1 處理鍵盤事件 302
21.11.2 處理滑鼠移動 303
21.12 增加新的敵人 303
21.13 移動玩家角色和敵人 305
21.14 實現作弊模式 306
21.15 刪除敵人 306
21.16 繪製視窗 307
21.16.1 繪製玩家的得分 307
21.16.2 繪製玩家角色和敵人 307
21.17 碰撞檢測 308
21.18 遊戲結束螢幕 308
21.19 修改Dodger遊戲 309
21.20 小結 310
4.2 Jokes遊戲的原始碼 36
4.3 代碼如何工作 36
4.4 轉義字元 37
4.5 單引號和雙引號 38
4.6 print()的end關鍵字形參 39
4.7 小結 39
第5章 Dragon Realm 41
5.1 如何玩Dragon Realm 41
5.2 Dragon Realm的運行示例 42
5.3 Dragon Realm的流程圖 42
5.4 Dragon Realm的原始碼 43
5.5 導入random和time模組 44
5.6 Dragon Realm中的函式 44
5.6.1 def語句 45
5.6.2 調用函式 45
5.6.3 把函式定義放在哪裡 45
5.7 多行字元串 46
5.8 while語句實現循環 46
5.9 布爾操作符 47
5.9.1 and操作符 47
5.9.2 or操作符 48
5.9.3 not操作符 49
5.9.4 布爾操作符的運算 49
5.10 返回值 50
5.11 全局作用域和局部作用域 51
5.12 函式形參 52
5.13 顯示遊戲結果 53
5.14 決定哪個山洞有友善的龍 53
5.15 遊戲循環 54
5.15.1 在程式中調用函式 55
5.15.2 詢問玩家要不要再玩
一局 55
5.16 小結 56
第6章 使用調試器 57
6.1 Bug的類型 57
6.2 調試器 58
6.2.1 啟動調試器 59
6.2.2 用調試器單步執行程式 60
6.3 查找Bug 63
6.4 設定斷點 65
6.5 使用斷點 66
6.6 小結 68
第7章 用流程圖設計Hangman 69
7.1 如何玩Hangman 69
7.2 Hangman的運行示例 70
7.3 ASCII字元圖 71
7.4 用流程圖來設計一個程式 71
7.4.1 生成流程圖 72
7.4.2 流程圖的分支 73
7.4.3 結束或者重新開始遊戲 74
7.4.4 再猜一次 75
7.4.5 為玩家提供反饋 77
7.5 小結 78
第8章 編寫Hangman的代碼 79
8.1 Hangman的原始碼 79
8.2 導入random模組 82
8.3 常量 82
8.4 列表數據類型 83
8.4.1 用索引訪問元素 83
8.4.2 列表連線 84
8.4.3 in操作符 85
8.5 調用方法 85
8.5.1 列表方法reverse()和
append() 86
8.5.2 字元串方法split() 86
8.6 從單詞列表中獲取一個神秘
單詞 87
8.7 向玩家顯示遊戲板 87
8.7.1 list()函式和range()函式 88
8.7.2 列表和字元串分片 89
8.7.3 用空格表示神秘單詞 90
8.8 獲取玩家的猜測 91
8.8.1 字元串方法lower()和
upper() 92
8.8.2 離開while循環 93
8.9 elif語句 93
8.10 確保玩家輸入一個有效的
猜測 94
8.11 詢問玩家是否想再玩一局 94
8.12 回顧Hangman中的函式 95
8.13 遊戲循環 96
8.13.1 調用displayBoard()函式 96
8.13.2 讓玩家輸入他們的猜測 96
8.13.3 判斷字母是否在這個
神秘單詞中 97
8.13.4 判斷玩家是否獲勝 97
8.13.5 當玩家猜錯時 97
8.13.6 檢查玩家是否輸了 98
8.13.7 結束並重新設定遊戲 98
8.14 小結 99
第9章 Hangman擴展 101
9.1 添加更多的猜測機會 101
9.2 字典數據類型 102
9.2.1 用len()函式獲取字典的
大小 103
9.2.2 字典和列表的區別 103
9.2.3 字典方法keys()和
values() 104
9.2.4 在Hangman中使用單詞的
字典 104
9.3 從一個列表中隨機選取 105
9.4 從列表中刪除項 106
9.5 多變數賦值 107
9.6 向玩家顯示單詞的分類 108
9.7 小結 109
第 10章 Tic Tac Toe 111
10.1 Tic Tac Toe的運行示例 112
10.2 Tic Tac Toe的原始碼 113
10.3 設計程式 116
10.3.1 用數據表示遊戲板 117
10.3.2 遊戲AI 117
10.4 導入random模組 119
10.5 在螢幕上列印遊戲板 119
10.6 讓玩家來選擇X或O 120
10.7 決定誰先走 121
10.8 在遊戲板上放置一個標記 121
10.8.1 列表引用 121
10.8.2 在makeMove()中使用
列表引用 124
10.9 判斷玩家是否獲勝 125
10.10 複製遊戲板的數據 126
10.11 判斷遊戲板上的格子是否
為空 127
10.12 讓玩家輸入他們的落子 127
10.13 短路求值 128
10.14 從落子列表中選擇一個
落子 130
10.15 None值 130
10.16 創建計算機的AI 131
10.16.1 計算機判斷自己能否
落子即獲勝 132
10.16.2 計算機判斷玩家是否
可以落子即獲勝 132
10.16.3 依次判斷角、中心
和邊 133
10.16.4 判斷遊戲板是否滿了 133
10.17 遊戲循環 134
10.17.1 決定玩家的符號和
誰先走 134
10.17.2 運行玩家的輪次 134
10.17.3 運行計算機的輪次 135
10.17.4 詢問玩家是否再玩
一次 136
10.18 小結 136
第 11章 推理遊戲Bagels 137
11.1 Bagels的運行示例 138
11.2 Bagels的原始碼 138
11.3 Bagels的流程圖 140
11.4 導入random並定義
getSecretNum() 140
11.5 打亂一組唯 一數的順序 141
11.5.1 用random.shuffle()函式改變
列表項的順序 141
11.5.2 從打亂次序的數中獲取神秘
數字 142
11.6 複合賦值操作符 142
11.7 計算要給出的線索 143
11.8 列表方法sort() 144
11.9 字元串方法join() 145
11.10 檢查字元串中是否只包含
數字 145
11.11 遊戲的開始 146
11.12 字元串插值 146
11.13 遊戲循環 147
11.13.1 獲取玩家的猜測 147
11.13.2 根據玩家的猜測給出
線索 148
11.13.3 判斷玩家的輸贏 148
11.13.4 詢問玩家是否再玩
一局 148
11.14 小結 149
第 12章 笛卡爾坐標 151
12.1 格線和笛卡爾坐標 151
12.2 負數 153
12.3 計算機螢幕的坐標系 154
12.4 數學技巧 155
12.4.1 技巧1:減號吃掉它左邊
的加號 155
12.4.2 技巧2:兩個減號合併為
一個加號 155
12.4.3 技巧3:加法的可
交換性 156
12.5 絕 對值和abs()函式 156
12.6 小結 157
第 13章 Sonar Treasure Hunt遊戲 159
13.1 Sonar Treasure Hunt的運行
示例 160
13.2 Sonar Treasure Hunt的源
代碼 162
13.3 設計程式 167
13.4 導入random、sys和math
模組 167
13.5 創建一個新的遊戲板 167
13.6 繪製遊戲板 168
13.6.1 在頂部繪製X軸 169
13.6.2 繪製海洋 170
13.6.3 列印出海洋中的行 170
13.6.4 在遊戲板底部繪製X軸
坐標 171
13.7 創建隨機的藏寶箱 171
13.8 判斷一次移動是否有效 172
13.9 在遊戲板上進行一次移動 172
13.9.1 找到近的藏寶箱的
算法 172
13.9.2 使用列表方法remove()
刪除值 175
13.9.3 獲取玩家的移動 176
13.10 為玩家列印出遊戲說明 177
13.11 遊戲循環 177
13.11.1 為玩家顯示遊戲的
狀態 179
13.11.2 處理玩家的移動 179
13.11.3 找到一個沉沒的
藏寶箱 179
13.11.4 判斷玩家是否贏了 180
13.11.5 判斷玩家是否輸了 180
13.11.6 用sys.exit()函式終止
程式 181
13.12 小結 181
第 14章 凱撒密碼 183
14.1 密碼學和加密 184
14.2 凱撒密碼簡介 184
14.3 凱撒密碼的運行示例 185
14.4 凱撒密碼程式的原始碼 186
14.6 決定加密還是解密 187
14.7 從玩家處得到訊息 188
14.8 從玩家處得到密鑰 188
14.9 加密或解密訊息 188
14.9.1 使用字元串方法find()
找到所傳遞的字元串 189
14.9.2 加密或解密每個字母 190
14.10 程式開始 191
14.11 暴力破解 191
14.12 添加暴力破解模式 192
14.13 小結 193
第 15章 Reversegam遊戲 195
15.1 如何玩Reversegam 195
15.2 Reversegam的運行示例 198
15.3 Reversegam的原始碼 200
15.4 導入模組和設定常量 205
15.5 遊戲板數據結構 205
15.5.1 在螢幕上繪製遊戲板數據
結構 205
15.5.2 創建一個新的遊戲板數據
結構 206
15.6 判斷一次落子是否有效 207
15.6.1 查看8個方向中的每一個
方向 208
15.6.2 發現是否有可以反轉的
棋子 209
15.7 判斷有效的坐標 210
15.7.1 得到所有有效移動的一個
列表 210
15.7.2 調用bool()函式 211
15.8 計算遊戲板的得分 212
15.9 獲取玩家的棋子選擇 212
15.10 決定誰先走 213
15.11 在遊戲板上落下一個棋子 213
15.12 複製遊戲板數據結構 214
15.13 判斷一個格子是否在
角落上 214
15.14 獲取玩家的移動 214
15.15 獲取計算機的移動 216
15.15.1 角落移動策略 216
15.15.2 獲取高得分的移動的列表 217
15.16 在螢幕上列印分數 218
15.17 遊戲開始 218
15.17.1 檢查僵局 218
15.17.2 運行玩家的輪次 219
15.17.3 運行計算機的輪次 220
15.18 遊戲循環 221
15.19 詢問玩家是否再玩一局 222
15.20 小結 222
第 16章 Reversegam AI模擬 223
16.1 讓計算機和自己下棋 224
16.1.1 模擬程式1的運行
示例 224
16.1.2 模擬程式1的原始碼 225
16.1.3 刪除玩家提示並添加一個
計算機玩家 226
16.2 讓計算機自己多玩幾次 227
16.2.1 模擬程式2的運行
示例 227
16.2.2 模擬程式2的原始碼 227
16.2.3 記錄多次遊戲 228
16.2.4 注釋掉print()函式
調用 229
16.2.5 使用百分數評級AI 229
16.3 比較不同的AI算法 231
16.3.1 模擬程式3的原始碼 231
16.3.2 模擬程式3的AI是
如何工作的 232
16.3.3 比較AI 235
16.4 小結 237
第 17章 創建圖形 239
17.1 安裝pygame 240
17.2 pygame中的Hello World 240
17.3 運行pygame Hello World程式的
示例 240
17.4 pygame Hello World的
原始碼 241
17.5 導入pygame模組 242
17.6 初始化pygame 243
17.7 設定pygame視窗 243
17.7.1 元組 243
17.7.2 Surface對象 244
17.8 設定顏色變數 244
17.9 將文本寫到pygame視窗上 245
17.9.1 使用字型來樣式化
文本 245
17.9.2 渲染一個Font對象 246
17.9.3 使用Rect屬性設定文本
位置 247
17.10 用一種顏色填充一個Surface
對象 248
17.11 pygame的繪製函式 249
17.11.1 繪製一個多邊形 249
17.11.2 繪製直線 250
17.11.3 繪製圓形 250
17.11.4 繪製橢圓形 251
17.11.5 繪製矩形 251
17.11.6 給像素著色 252
17.12 Surface對象的blit()方法 252
17.13 將Surface對象繪製到
螢幕上 253
17.14 事件和遊戲循環 253
17.14.1 獲取事件對象 253
17.14.2 退出程式 254
17.15 小結 254
第 18章 動畫圖形 255
18.1 Animation程式的運行示例 255
18.2 Animation程式的原始碼 256
18.3 讓積木移動和彈回 258
18.4 設定常量變數 258
18.4.1 用於方向的常量變數 259
18.4.2 用於顏色的常量變數 260
18.5 設定積木數據結構 260
18.6 遊戲循環 260
18.6.1 處理玩家退出的情況 261
18.6.2 移動每一個積木 261
18.6.3 彈跳一個積木 262
18.6.4 將積木繪製到視窗中
新的位置 263
18.6.5 在螢幕上繪製視窗 264
18.7 小結 264
第 19章 碰撞檢測 265
19.1 碰撞檢測程式的運行示例 266
19.2 Collision Detection程式的
原始碼 266
19.3 導入模組 268
19.4 使用一個時鐘來同步程式 268
19.5 創建視窗和數據結構 269
19.6 設定變數以記錄移動 270
19.7 處理事件 270
19.7.1 處理KEYDOWN事件 271
19.7.2 處理KEYUP事件 273
19.8 轉移玩家 274
19.9 添加新的食物方塊 274
19.10 在螢幕上移動玩家 275
19.10.1 將玩家繪製到螢幕上 275
19.10.2 檢查碰撞 276
19.11 在視窗上繪製食物方塊 276
19.12 小結 277
第 20章 聲音和圖像 279
20.1 使用精靈添加圖像 279
20.2 聲音檔案和圖像檔案 280
20.3 Sprites and Sounds程式的
運行示例 281
20.4 Sprites and Sounds程式的
原始碼 281
20.5 創建視窗和數據結構 284
20.5.1 添加一個精靈 284
20.5.2 改變一個精靈的大小 284
20.6 創建音樂和聲音 285
20.6.1 添加聲音檔案 285
20.6.2 切換和關閉聲音 285
20.7 把玩家繪製到視窗上 286
20.8 檢查碰撞 286
20.9 在視窗中繪製櫻桃 287
20.10 小結 287
第 21章 帶有聲音和圖像的Dodger 289
21.1 回顧pygame的基本數據
類型 289
21.2 Dodger的運行示例 290
21.3 Dodger的原始碼 291
21.4 導入模組 295
21.5 創建常量 295
21.6 定義函式 296
21.6.1 終止和暫停遊戲 296
21.6.2 記錄和敵人的碰撞 297
21.6.3 將文本繪製到視窗 297
21.7 初始化pygame並設定視窗 298
21.8 設定Font、Sound和Image
對象 299
21.9 顯示開始界面 300
21.10 開始遊戲 300
21.11 遊戲循環 302
21.11.1 處理鍵盤事件 302
21.11.2 處理滑鼠移動 303
21.12 增加新的敵人 303
21.13 移動玩家角色和敵人 305
21.14 實現作弊模式 306
21.15 刪除敵人 306
21.16 繪製視窗 307
21.16.1 繪製玩家的得分 307
21.16.2 繪製玩家角色和敵人 307
21.17 碰撞檢測 308
21.18 遊戲結束螢幕 308
21.19 修改Dodger遊戲 309
21.20 小結 310