《Python游戏编程快速上手 第4版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)斯维加特著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2017
  • ISBN:9787115466419
  • 页数:310 页
图书介绍:本书通过编写一个个小巧、有趣的游戏来教授Python编程,并且采用了直接展示游戏的源代码并通过实例来解释编程的原理的方式。全书共21章,12个游戏程序和示例贯穿其中,介绍了Python基础知识、数据类型、函数、流程控制、程序调试、流程图设计、字符串操作、列表和字典、笛卡尔坐标系、密码学基础、游戏AI模拟、动画图形、碰撞检测、声音和图像等方方面面的程序设计知识。

第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 Al模拟 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