産品特色
編輯推薦
本書教你如何使用流行的Python編程語言來編寫計算機遊戲,即便你之前沒有任何編程經驗。
首先,本書帶領讀者猜數字和Tic Tac Toe這樣的經典遊戲,然後開始學習更加高級的遊戲的開發,例如基於文本的Sonar Treasure Hunt遊戲以及帶有音效和動畫的Dodger遊戲。在此過程中, 我們還會學習關鍵的編程和數學概念,這些將使得你的遊戲開發技能達到更高的層級。
通過本書,你將學習:
使用組閤循環、變量和流程控製語句;
選擇閤適的數據結構來完成任務,例如列錶、字典和元組;
使用pygame模塊,為遊戲添加圖形和動畫;
處理鍵盤和鼠標輸入;
編寫簡單的人工智能程序,從而能夠和計算機玩遊戲;
使用加密技術把文本信息轉換為密碼;
調試程序並找齣常見錯誤。
隨著你編寫每一個遊戲,你將打下牢固的Python編程基礎,並且能夠更好地理解計算機科學的基礎知識。
內容簡介
Python是一種高級程序設計語言,因其簡潔、易讀及可擴展性日漸成為程序設計領域備受推崇的語言。
本書通過編寫一個個小巧、有趣的遊戲來教授Python編程,並且采用直接展示遊戲的源代碼並通過實例來解釋編程的原理的方式。全書共21章,12個遊戲程序和示例貫穿其中,介紹瞭Python基礎知識、數據類型、函數、流程控製、程序調試、流程圖設計、字符串操作、列錶和字典、笛卡爾坐標係、密碼學基礎、遊戲AI模擬、動畫圖形、碰撞檢測、聲音和圖像等方方麵麵的程序設計知識。本書可以幫助讀者在輕鬆有趣的過程中,掌握Python遊戲編程的基本技能。
本書適閤不同年齡和層次的Python編程初學者閱讀。
作者簡介
Al Sweigart是一名教授孩子和成人編程的軟件開發者。通過http://inventwithpython.com/可以訪問他編寫的編程教程。他是暢銷書《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.5 設置最大鍵長度 187
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 元組 24
Python遊戲編程快速上手 第4版 下載 mobi epub pdf txt 電子書 格式