本书教你如何使用流行的Python编程语言来编写计算机游戏,即便你之前没有任何编程经验。 首先,本书带领读者猜数字和Tic Tac Toe这样的经典游戏,然后始学习更加高级的游戏的发,例如基于文本的Sonar Treasure Hunt游戏以及带有音效和动画的Dodger游戏。在此过程中, 我们还会学习关键的编程和数学概念,这些将使得你的游戏发技能达到更高的层级。 通过本书,你将学习: 使用组合循环、变量和流程控制语句;
售 价:¥
纸质售价:¥51.70购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
内容提要
前言
第1章 交互式Shell
1.1 一些简单的数学知识
1.1.1 整数和浮点数
1.1.2 表达式
1.2 计算表达式
1.3 语法错误
1.4 在变量中存储值
1.5 小结
第2章 编写程序
2.1 字符串值
2.2 连接字符串
2.3 在IDLE的文件编辑器中编写程序
2.3.1 创建Hello World程序
2.3.2 保存程序
2.3.3 运行程序
2.4 Hello World程序如何工作
2.4.1 注释
2.4.2 函数:程序中的小程序
2.4.3 终止程序
2.5 命名变量
2.6 小结
第3章 “猜数字”游戏
3.1 “猜数字”的运行示例
3.2 “猜数字”程序的源代码
3.3 导入random模块
3.4 用random.randint()函数生成随机数
3.5 欢迎玩家
3.6 流程控制语句
3.6.1 使用循环来重复代码
3.6.2 组织语句块
3.6.3 for循环语句
3.7 玩家的猜测
3.8 使用int()函数、float()函数、str()函数和bool()函数来转换值
3.9 布尔数据类型
3.9.1 比较操作符
3.9.2 用条件检查True或False
3.9.3 体验布尔值、比较操作符和条件
3.9.4 =和==的区别
3.10 if语句
3.11 用break语句提早离开循环
3.12 判断玩家是否赢了
3.13 判断玩家是否输了
3.14 小结
第4章 一个讲笑话程序
4.1 Jokes游戏的运行示例
4.2 Jokes游戏的源代码
4.3 代码如何工作
4.4 转义字符
4.5 单引号和双引号
4.6 print()的end关键字形参
4.7 小结
第5章 Dragon Realm
5.1 如何玩Dragon Realm
5.2 Dragon Realm的运行示例
5.3 Dragon Realm的流程图
5.4 Dragon Realm的源代码
5.5 导入random和time模块
5.6 Dragon Realm中的函数
5.6.1 def语句
5.6.2 调用函数
5.6.3 把函数定义放在哪里
5.7 多行字符串
5.8 while语句实现循环
5.9 布尔操作符
5.9.1 and操作符
5.9.2 or操作符
5.9.3 not操作符
5.9.4 布尔操作符的运算
5.10 返回值
5.11 全局作用域和局部作用域
5.12 函数形参
5.13 显示游戏结果
5.14 决定哪个山洞有友善的龙
5.15 游戏循环
5.15.1 在程序中调用函数
5.15.2 询问玩家要不要再玩一局
5.16 小结
第6章 使用调试器
6.1 Bug的类型
6.2 调试器
6.2.1 启动调试器
6.2.2 用调试器单步执行程序
6.3 查找Bug
6.4 设置断点
6.5 使用断点
6.6 小结
第7章 用流程图设计Hangman
7.1 如何玩Hangman
7.2 Hangman的运行示例
7.3 ASCII字符图
7.4 用流程图来设计一个程序
7.4.1 生成流程图
7.4.2 流程图的分支
7.4.3 结束或者重新开始游戏
7.4.4 再猜一次
7.4.5 为玩家提供反馈
7.5 小结
第8章 编写Hangman的代码
8.1 Hangman的源代码
8.2 导入random模块
8.3 常量
8.4 列表数据类型
8.4.1 用索引访问元素
8.4.2 列表连接
8.4.3 in操作符
8.5 调用方法
8.5.1 列表方法reverse()和append()
8.5.2 字符串方法split()
8.6 从单词列表中获取一个神秘单词
8.7 向玩家显示游戏板
8.7.1 list()函数和range()函数
8.7.2 列表和字符串分片
8.7.3 用空格表示神秘单词
8.8 获取玩家的猜测
8.8.1 字符串方法lower()和upper()
8.8.2 离开while循环
8.9 elif语句
8.10 确保玩家输入一个有效的猜测
8.11 询问玩家是否想再玩一局
8.12 回顾Hangman中的函数
8.13 游戏循环
8.13.1 调用displayBoard()函数
8.13.2 让玩家输入他们的猜测
8.13.3 判断字母是否在这个神秘单词中
8.13.4 判断玩家是否获胜
8.13.5 当玩家猜错时
8.13.6 检查玩家是否输了
8.13.7 结束并重新设置游戏
8.14 小结
第9章 Hangman扩展
9.1 添加更多的猜测机会
9.2 字典数据类型
9.2.1 用len()函数获取字典的大小
9.2.2 字典和列表的区别
9.2.3 字典方法keys()和values()
9.2.4 在Hangman中使用单词的字典
9.3 从一个列表中随机选取
9.4 从列表中删除项
9.5 多变量赋值
9.6 向玩家显示单词的分类
9.7 小结
第10章 Tic Tac Toe
10.1 Tic Tac Toe的运行示例
10.2 Tic Tac Toe的源代码
10.3 设计程序
10.3.1 用数据表示游戏板
10.3.2 游戏AI
10.4 导入random模块
10.5 在屏幕上打印游戏板
10.6 让玩家来选择X或O
10.7 决定谁先走
10.8 在游戏板上放置一个标记
10.8.1 列表引用
10.8.2 在makeMove()中使用列表引用
10.9 判断玩家是否获胜
10.10 复制游戏板的数据
10.11 判断游戏板上的格子是否为空
10.12 让玩家输入他们的落子
10.13 短路求值
10.14 从落子列表中选择一个落子
10.15 None值
10.16 创建计算机的AI
10.16.1 计算机判断自己能否落子即获胜
10.16.2 计算机判断玩家是否可以落子即获胜
10.16.3 依次判断角、中心和边
10.16.4 判断游戏板是否满了
10.17 游戏循环
10.17.1 决定玩家的符号和谁先走
10.17.2 运行玩家的轮次
10.17.3 运行计算机的轮次
10.17.4 询问玩家是否再玩一次
10.18 小结
第11章 推理游戏Bagels
11.1 Bagels的运行示例
11.2 Bagels的源代码
11.3 Bagels的流程图
11.4 导入random并定义getSecretNum()
11.5 打乱一组唯一数的顺序
11.5.1 用random.shuffle()函数改变列表项的顺序
11.5.2 从打乱次序的数中获取神秘数字
11.6 复合赋值操作符
11.7 计算要给出的线索
11.8 列表方法sort()
11.9 字符串方法join()
11.10 检查字符串中是否只包含数字
11.11 游戏的开始
11.12 字符串插值
11.13 游戏循环
11.13.1 获取玩家的猜测
11.13.2 根据玩家的猜测给出线索
11.13.3 判断玩家的输赢
11.13.4 询问玩家是否再玩一局
11.14 小结
第12章 笛卡尔坐标
12.1 网格和笛卡尔坐标
12.2 负数
12.3 计算机屏幕的坐标系
12.4 数学技巧
12.4.1 技巧1:减号吃掉它左边的加号
12.4.2 技巧2:两个减号合并为一个加号
12.4.3 技巧3:加法的可交换性
12.5 绝对值和abs()函数
12.6 小结
第13章 Sonar Treasure Hunt游戏
13.1 Sonar Treasure Hunt的运行示例
13.2 Sonar Treasure Hunt的源代码
13.3 设计程序
13.4 导入random、sys和math模块
13.5 创建一个新的游戏板
13.6 绘制游戏板
13.6.1 在顶部绘制X轴
13.6.2 绘制海洋
13.6.3 打印出海洋中的行
13.6.4 在游戏板底部绘制X轴坐标
13.7 创建随机的藏宝箱
13.8 判断一次移动是否有效
13.9 在游戏板上进行一次移动
13.9.1 找到最近的藏宝箱的算法
13.9.2 使用列表方法remove()删除值
13.9.3 获取玩家的移动
13.10 为玩家打印出游戏说明
13.11 游戏循环
13.11.1 为玩家显示游戏的状态
13.11.2 处理玩家的移动
13.11.3 找到一个沉没的藏宝箱
13.11.4 判断玩家是否赢了
13.11.5 判断玩家是否输了
13.11.6 用sys.exit()函数终止程序
13.12 小结
第14章 凯撒密码
14.1 密码学和加密
14.2 凯撒密码简介
14.3 凯撒密码的运行示例
14.4 凯撒密码程序的源代码
14.5 设置最大键长度
14.6 决定加密还是解密
14.7 从玩家处得到消息
14.8 从玩家处得到密钥
14.9 加密或解密消息
14.9.1 使用字符串方法find()找到所传递的字符串
14.9.2 加密或解密每个字母
14.10 程序开始
14.11 暴力破解
14.12 添加暴力破解模式
14.13 小结
第15章 Reversegam游戏
15.1 如何玩Reversegam
15.2 Reversegam的运行示例
15.3 Reversegam的源代码
15.4 导入模块和设置常量
15.5 游戏板数据结构
15.5.1 在屏幕上绘制游戏板数据结构
15.5.2 创建一个新的游戏板数据结构
15.6 判断一次落子是否有效
15.6.1 查看8个方向中的每一个方向
15.6.2 发现是否有可以反转的棋子
15.7 判断有效的坐标
15.7.1 得到所有有效移动的一个列表
15.7.2 调用bool()函数
15.8 计算游戏板的得分
15.9 获取玩家的棋子选择
15.10 决定谁先走
15.11 在游戏板上落下一个棋子
15.12 复制游戏板数据结构
15.13 判断一个格子是否在角落上
15.14 获取玩家的移动
15.15 获取计算机的移动
15.15.1 角落移动策略
15.15.2 获取最高得分的移动的列表
15.16 在屏幕上打印分数
15.17 游戏开始
15.17.1 检查僵局
15.17.2 运行玩家的轮次
15.17.3 运行计算机的轮次
15.18 游戏循环
15.19 询问玩家是否再玩一局
15.20 小结
第16章 Reversegam AI模拟
16.1 让计算机和自己下棋
16.1.1 模拟程序1的运行示例
16.1.2 模拟程序1的源代码
16.1.3 删除玩家提示并添加一个计算机玩家
16.2 让计算机自己多玩几次
16.2.1 模拟程序2的运行示例
16.2.2 模拟程序2的源代码
16.2.3 记录多次游戏
16.2.4 注释掉print()函数调用
16.2.5 使用百分数评级AI
16.3 比较不同的AI算法
16.3.1 模拟程序3的源代码
16.3.2 模拟程序3的AI是如何工作的
16.3.3 比较AI
16.4 小结
第17章 创建图形
17.1 安装pygame
17.2 pygame中的Hello World
17.3 运行pygame Hello World程序的示例
17.4 pygame Hello World的源代码
17.5 导入pygame模块
17.6 初始化pygame
17.7 设置pygame窗口
17.7.1 元组
17.7.2 Surface对象
17.8 设置颜色变量
17.9 将文本写到pygame窗口上
17.9.1 使用字体来样式化文本
17.9.2 渲染一个Font对象
17.9.3 使用Rect属性设置文本位置
17.10 用一种颜色填充一个Surface对象
17.11 pygame的绘制函数
17.11.1 绘制一个多边形
17.11.2 绘制直线
17.11.3 绘制圆形
17.11.4 绘制椭圆形
17.11.5 绘制矩形
17.11.6 给像素着色
17.12 Surface对象的blit()方法
17.13 将Surface对象绘制到屏幕上
17.14 事件和游戏循环
17.14.1 获取事件对象
17.14.2 退出程序
17.15 小结
第18章 动画图形
18.1 Animation程序的运行示例
18.2 Animation程序的源代码
18.3 让积木移动和弹回
18.4 设置常量变量
18.4.1 用于方向的常量变量
18.4.2 用于颜色的常量变量
18.5 设置积木数据结构
18.6 游戏循环
18.6.1 处理玩家退出的情况
18.6.2 移动每一个积木
18.6.3 弹跳一个积木
18.6.4 将积木绘制到窗口中其新的位置
18.6.5 在屏幕上绘制窗口
18.7 小结
第19章 碰撞检测
19.1 碰撞检测程序的运行示例
19.2 Collision Detection程序的源代码
19.3 导入模块
19.4 使用一个时钟来同步程序
19.5 创建窗口和数据结构
19.6 设置变量以记录移动
19.7 处理事件
19.7.1 处理KEYDOWN事件
19.7.2 处理KEYUP事件
19.8 转移玩家
19.9 添加新的食物方块
19.10 在屏幕上移动玩家
19.10.1 将玩家绘制到屏幕上
19.10.2 检查碰撞
19.11 在窗口上绘制食物方块
19.12 小结
第20章 声音和图像
20.1 使用精灵添加图像
20.2 声音文件和图像文件
20.3 Sprites and Sounds程序的运行示例
20.4 Sprites and Sounds程序的源代码
20.5 创建窗口和数据结构
20.5.1 添加一个精灵
20.5.2 改变一个精灵的大小
20.6 创建音乐和声音
20.6.1 添加声音文件
20.6.2 切换和关闭声音
20.7 把玩家绘制到窗口上
20.8 检查碰撞
20.9 在窗口中绘制樱桃
20.10 小结
第21章 带有声音和图像的Dodger
21.1 回顾pygame的基本数据类型
21.2 Dodger的运行示例
21.3 Dodger的源代码
21.4 导入模块
21.5 创建常量
21.6 定义函数
21.6.1 终止和暂停游戏
21.6.2 记录和敌人的碰撞
21.6.3 将文本绘制到窗口
21.7 初始化pygame并设置窗口
21.8 设置Font、Sound和Image对象
21.9 显示开始界面
21.10 开始游戏
21.11 游戏循环
21.11.1 处理键盘事件
21.11.2 处理鼠标移动
21.12 增加新的敌人
21.13 移动玩家角色和敌人
21.14 实现作弊模式
21.15 删除敌人
21.16 绘制窗口
21.16.1 绘制玩家的得分
21.16.2 绘制玩家角色和敌人
21.17 碰撞检测
21.18 游戏结束屏幕
21.19 修改Dodger游戏
21.20 小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜