4.3 用户推荐指数
科技
类型
7.1
豆瓣评分
可以朗读
语音朗读
282千字
字数
2016-08-01
发行日期
展开全部
主编推荐语
游戏开发初学者必备指南。
内容简介
Python是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。
本书通过编写一个个小巧、有趣的游戏来教授Python编程,并且采用直接展示了游戏的源代码,通过实例来解释编程的原理的方式。全书共21章,14个游戏程序和示例贯穿其中,介绍了Python基础知识、数据类型、函数、流程控制、程序调试、流程图设计、字符串操作、列表和字典、图形和动画、碰撞检测、声音和图像等方方面面的程序设计知识。本书可以帮助读者在轻松有趣的过程中,掌握Python游戏编程的基本技能。
目录
- 版权信息
- 内容提要
- 前言
- 译者序
- 第1章 安装Python
- 1.1 下载和安装Python
- 1.2 启动IDLE
- 1.3 如何使用本书
- 1.4 寻求在线帮助
- 第2章 交互式shell
- 2.1 一些简单的数学知识
- 2.1.1 整数和浮点数
- 2.1.2 表达式
- 2.2 计算表达式
- 2.3 在变量中存储值
- 2.4 本章小结
- 第3章 编写程序
- 3.1 字符串
- 3.2 连接字符串
- 3.3 在IDLE的文件编辑器中编写程序
- 3.4 Hello World!
- 3.5 保存程序
- 3.6 打开保存过的程序
- 3.7 “Hello World”程序如何工作
- 3.7.1 函数
- 3.7.2 print()函数
- 3.7.3 input()函数
- 3.7.4 在函数调用中使用表达式
- 3.7.5 终止程序
- 3.8 变量名称
- 3.9 本章小结
- 第4章 “猜数字”游戏
- 4.1 “猜数字”游戏的运行示例
- 4.2 “猜数字”游戏的源代码
- 4.3 import语句
- 4.4 random.randint()函数
- 4.5 循环
- 4.6 语句块
- 4.7 布尔数据类型
- 4.8 比较操作符
- 4.9 条件
- 4.10 =和==的区别
- 4.11 while循环语句
- 4.12 使用int()函数、float()函数、str()函数和bool()函数来转换值
- 4.13 if语句
- 4.14 用break语句提早离开循环
- 4.14.1 判断玩家是否赢了
- 4.14.2 判断玩家是否输了
- 4.15 流程控制语句
- 4.16 本章小结
- 第5章 Jokes
- 5.1 用好print()函数
- 5.2 Jokes游戏的运行示例
- 5.3 Jokes游戏的源代码
- 5.4 转义字符
- 5.5 引号和双引号
- 5.6 print()的end关键字参数
- 5.7 本章小结
- 第6章 Dragon Realm
- 6.1 函数
- 6.2 如何玩Dragon Realm
- 6.3 Dragon Realm游戏的运行示例
- 6.4 Dragon Realm的源代码
- 6.5 def语句
- 6.5.1 把函数定义放在哪里
- 6.5.2 定义chooseCave()函数
- 6.6 布尔操作符
- 6.6.1 and和or操作符
- 6.6.2 not操作符
- 6.6.3 真值表
- 6.6.4 布尔操作符的运算
- 6.6.5 获取玩家的输入
- 6.7 返回值
- 6.8 全局作用域和局部作用域
- 6.9 形参
- 6.9.1 显示游戏结果
- 6.9.2 决定哪个山洞有友善的龙
- 6.9.3 程序的主要部分从哪里开始
- 6.9.4 在程序中调用函数
- 6.9.5 询问玩家要不要再玩一局
- 6.10 设计游戏
- 6.11 本章小结
- 第7章 使用调试器
- 7.1 Bug!
- 7.2 调试器
- 7.3 单步执行
- 7.3.1 Globals区域
- 7.3.2 Locals区域
- 7.3.3 Go按钮和Quit按钮
- 7.3.4 单步进入、单步跳过和单步退出
- 7.4 查找Bug
- 7.5 断点
- 7.6 使用断点的示例
- 7.7 本章小结
- 第8章 流程图
- 8.1 如何玩Hangman
- 8.2 Hangman的运行示例
- 8.3 ASCII字符图
- 8.4 用流程图来设计一个程序
- 8.5 生成流程图
- 8.5.1 流程图的分支
- 8.5.2 **结束或者重新开始游戏
- 8.5.3 再猜一次
- 8.5.4 为玩家提供反馈
- 8.6 本章小结
- 第9章 Hangman
- 9.1 Hangman的源代码
- 9.2 多行字符串
- 9.3 常量
- 9.4 列表
- 9.4.1 索引
- 9.4.2 IndexError
- 9.4.3 用指定索引来修改列表元素的值
- 9.4.4 列表连接
- 9.4.5 in操作符
- 9.4.6 使用del语句删除列表中的元素
- 9.4.7 列表的列表
- 9.5 方法
- 9.6 字符串方法lower()和upper()
- 9.7 列表方法reverse()和append()
- 9.8 列表方法split()
- 9.8.1 代码如何工作
- 9.8.2 向玩家显示游戏板
- 9.9 range()函数和list()函数
- 9.10 for循环
- 9.11 分片
- 9.11.1 用空格表示神秘单词
- 9.11.2 获取玩家的猜测
- 9.12 elif ("Else If")语句
- 9.12.1 确保玩家输入正确的猜测
- 9.12.2 家是否想再玩一局
- 9.12.3 回顾Hangman中的函数
- 9.12.4 创建变量
- 9.12.5 为玩家显示游戏板
- 9.12.6 让玩家输入他们的猜测
- 9.12.7 判断字母是否在这个神秘单词中
- 9.12.8 判断玩家是否获胜
- 9.12.9 当玩家猜错时
- 9.13 本章小结
- 第10章 Hangman扩展
- 10.1 字典
- 10.1.1 用len()函数获取字典的大小
- 10.1.2 字典和列表的区别
- 10.1.3 为Hangman设置词汇
- 10.2 random.choice()函数
- 10.3 多变量赋值
- 10.4 本章小结
- 第11章 Tic Tac Toe
- 11.1 Tic Tac Toe的运行示例
- 11.2 Tic Tac Toe的源代码
- 11.3 设计程序
- 11.4 游戏AI
- 11.4.1 程序开始
- 11.4.2 在屏幕上打印游戏板
- 11.4.3 让玩家来选择X或O
- 11.4.4 决定谁先走
- 11.4.5 询问玩家是否再玩一局
- 11.4.6 在游戏板上做标记
- 11.5 引用
- 11.5.1 在makeMove()中使用列表引用
- 11.5.2 判断玩家是否获胜
- 11.5.3 复制游戏板的数据
- 11.5.4 判断游戏板上的格子是否为空
- 11.5.5 让玩家输入他们的落子
- 11.6 短路求值
- 11.6.1 短路运算的一个示例
- 11.6.2 从落子列表中选择一个落子
- 11.7 None值
- 11.7.1 创建计算机的人工智能
- 11.7.2 计算机判断自己能否落子即获胜
- 11.7.3 计算机判断玩家是否可以落子即获胜
- 11.7.4 依次判断角、中心和边
- 11.7.5 判断游戏板是否满了
- 11.7.6 游戏的开始
- 11.7.7 决定玩家的符号和谁现走
- 11.7.8 运行玩家的轮次
- 11.7.9 运行计算机的轮次
- 11.8 本章小结
- 第12章 Bagels
- 12.1 Bagels的运行示例
- 12.2 Bagels的源代码
- 12.2.1 设计程序
- 12.2.2 代码如何工作
- 12.2.3 打乱一组唯一数的顺序
- 12.3 random.shuffle()函数
- 12.4 复合赋值操作符
- 12.5 列表方法sort()
- 12.6 字符串方法join()
- 12.6.1 检查字符串中是否只包含数字
- 12.6.2 了解玩家是否想再玩一局
- 12.6.3 **游戏的开始
- 12.7 字符串插值
- 12.7.1 创建神秘数字
- 12.7.2 获取玩家的猜测
- 12.7.3 根据玩家的猜测给出线索
- 12.7.4 判断玩家的输赢
- 12.7.5 询问玩家是否再玩一局
- 12.8 本章小结
- 第13章 笛卡尔坐标
- 13.1 网格和笛卡尔坐标
- 13.2 负数
- 13.3 数学技巧
- 13.4 绝对值和abs()函数
- 13.5 计算机屏幕的坐标系
- 13.6 本章小结
- 第14章 Sonar Treasure Hunt
- 14.1 Sonar Treasure Hunt的运行示例
- 14.2 Sonar Treasure Hunt的源代码
- 14.3 设计程序
- 14.3.1 代码如何工作
- 14.3.2 绘制游戏板
- 14.3.3 在顶部绘制X轴
- 14.3.4 绘制表示海洋的行
- 14.3.5 在底部绘制X轴坐标
- 14.3.6 获取海洋中一行的状态
- 14.3.7 创建一个新的游戏板
- 14.3.8 创建随机的藏宝箱
- 14.3.9 判断一次移动是否有效
- 14.3.10 在游戏板上进行一次移动
- 14.4 找到最近的藏宝箱的算法
- 14.5 列表方法remove()
- 14.5.1 获取玩家的移动
- 14.5.2 询问玩家是否再玩一局
- 14.5.3 为玩家打印出游戏说明
- 14.5.4 游戏开始
- 14.5.5 为玩家显示游戏的状态
- 14.5.6 获取玩家的移动
- 14.5.7 找到一个沉没的藏宝箱
- 14.5.8 判断玩家是否赢了
- 14.5.9 判断玩家是否输了
- 14.5.10 sys.exit()函数
- 14.6 本章小结
- 第15章 Caesar Cipher
- 15.1 密码学
- 15.2 凯撒密码
- 15.3 ASCII码以及用数字表示字母
- 15.4 函数chr()和ord()
- 15.5 凯撒密码的运行示例
- 15.6 Caesar Cipher的源代码
- 15.7 代码如何工作
- 15.7.1 决定加密还是解密
- 15.7.2 从玩家处得到消息
- 15.7.3 从玩家处得到密钥
- 15.7.4 用给定的密钥来加密和解密消息
- 15.8 字符串方法isalpha()
- 15.9 字符串方法isupper()和islower()
- 15.9.1 加密或解密每个字母
- 15.9.2 程序开始
- 15.10 暴力破解
- 15.11 本章小结
- 第16章 Reversi
- 16.1 Reversi的运行示例
- 16.2 Reversi的源代码
- 16.3 代码如何工作
- 16.3.1 游戏板数据结构
- 16.3.2 导入其他模块
- 16.3.3 在屏幕上绘制游戏板数据结构
- 16.3.4 重置游戏板
- 16.3.5 设置开始棋子
- 16.3.6 创建一个新的游戏板数据结构
- 16.3.7 判断一次落子是否有效
- 16.3.8 查看8个方向中的每一个方向
- 16.3.9 发现是否有可以反转的棋子
- 16.3.10 判断有效的坐标
- 16.3.11 得到所有有效移动的一个列表
- 16.4 bool()函数
- 16.4.1 计算游戏板的得分
- 16.4.2 获取玩家的棋子选择
- 16.4.3 决定谁先走
- 16.4.4 询问玩家是否要再玩一局
- 16.4.5 在游戏板上落下一个棋子
- 16.4.6 复制游戏板数据结构
- 16.4.7 判断一个格子是否在角落上
- 16.4.8 获取玩家的移动
- 16.4.9 获取计算机的移动
- 16.4.10 角落移动是最佳移动
- 16.4.11 获取最高得分的移动的列表
- 16.4.12 在游戏板数据结构的副本上模拟所有可能的移动
- 16.4.13 在屏幕上打印分数
- 16.4.14 游戏开始
- 16.4.15 运行玩家的轮次
- 16.4.16 处理退出或提示的命令
- 16.4.17 进行玩家的移动
- 16.4.18 运行计算机的轮次
- 16.4.19 在屏幕上绘制所有内容
- 16.4.20 询问玩家是否再玩一局
- 16.4.21 修改drawBoard()函数
- 16.5 本章小结
- 第17章 Reversi AI模拟
- 17.1 让计算机和自己下棋
- 17.1.1 AISim1.py代码如何工作
- 17.1.2 让计算机和自己下几盘棋
- 17.1.3 AISim2.py
- 17.1.4 AISim2.py代码如何工作
- 17.2 百分数
- 17.3 round()函数
- 17.4 AISim2.py的运行示例
- 17.5 比较不同的AI算法
- 17.5.1 AISim3.py
- 17.5.2 AISim3.py代码如何工作
- 17.5.3 比较随机算法和常规算法
- 17.5.4 比较用随机算法对弈
- 17.5.5 比较常规算法和角边优先算法
- 17.5.6 比较常规算法和最糟糕算法
- 17.5.7 比较常规算法和WorstCorner算法
- 17.5.8 比较最糟糕的算法和WorstCorner算法
- 17.6 本章小结
- 第18章 图形和动画
- 18.1 安装Pygame
- 18.2 Pygame中的Hello World
- 18.3 Hello World的源代码
- 18.4 运行Hello World程序
- 18.4.1 导入Pygame模块
- 18.4.2 pygame.init()函数
- 18.5 元组
- 18.6 RGB颜色
- 18.7 字体和pygame.font.SysFont()函数
- 18.8 属性
- 18.9 构造函数
- 18.10 Pygame的绘制函数
- 18.10.1 pygame.draw.polygon()函数
- 18.10.2 pygame.draw.line()函数
- 18.10.3 pygame.draw.circle()函数
- 18.10.4 pygame.draw.ellipse()函数
- 18.10.5 pygame.draw.rect()函数
- 18.10.6 pygame.PixelArray数据类型
- 18.10.7 Surface对象的blit()方法
- 18.10.8 pygame.display.update()函数
- 18.11 事件和游戏循环
- 18.11.1 pygame.event.get()函数
- 18.11.2 pygame.quit()函数
- 18.12 动画
- 18.13 Animation程序的源代码
- 18.14 Animation程序如何工作
- 18.14.1 让积木移动和弹回
- 18.14.2 创建并设置Pygame和主窗口
- 18.14.3 为方向设置常量
- 18.14.4 为颜色设置常量
- 18.14.5 设置积木数据结构
- 18.15 运行程序循环
- 18.15.1 移动每块积木
- 18.15.2 判断积木是否弹回
- 18.15.3 修改积木的弹回方向
- 18.15.4 在窗口上绘制积木的新位置
- 18.15.5 在屏幕上绘制窗口
- 18.15.6 绘制积木的轨迹
- 18.16 本章小结
- 第19章 碰撞检测与鼠标/键盘的输入
- 19.1 Collision Detection程序的源代码
- 19.2 Collision Detection算法
- 19.2.1 判断一个点是否在一个矩形中
- 19.2.2 pygame.time.Clock对象和tick()方法
- 19.2.3 创建窗口和数据结构
- 19.2.4 在屏幕上绘制“大块头”
- 19.2.5 食物方块的碰撞
- 19.3 当遍历一个列表的时候,不要修改该列表
- 19.3.1 删除食物方块
- 19.3.2 在屏幕上绘制食物方块
- 19.4 键盘输入程序的源代码
- 19.4.1 设置窗口和数据结构
- 19.4.2 事件和KEYDOWN事件的处理
- 19.4.3 设置4个键盘变量
- 19.4.4 处理KEYUP事件
- 19.4.5 转移玩家
- 19.4.6 处理MOUSEBUTTONUP事件
- 19.4.7 在屏幕上移动玩家
- 19.5 colliderect()方法
- 19.6 本章小结
- 第20章 声音和图像
- 20.1 声音文件和图像文件
- 20.2 精灵和声音程序
- 20.3 Sprites and Sounds程序的源代码
- 20.4 pygame.transform.scale()函数
- 20.4.1 创建音乐和声音
- 20.4.2 切换和关闭声音
- 20.4.3 把玩家绘制到窗口上
- 20.4.4 判断玩家是否和樱桃有碰撞
- 20.4.5 在窗口中绘制樱桃
- 20.5 本章小结
- 第21章 Dodger
- 21.1 回顾Pygame的基本数据类型
- 21.2 Dodger的源代码
- 21.2.1 导入模块
- 21.2.2 创建常量
- 21.2.3 定义函数
- 21.2.4 初始化Pygame并设置窗口
- 21.3 全屏模式
- 21.3.1 显示开始界面
- 21.3.2 主游戏代码的开始部分
- 21.4 游戏循环
- 21.5 事件处理
- 21.6 move_ip()方法
- 21.6.1 增加敌人
- 21.6.2 移动玩家角色
- 21.7 pygame.mouse.set_pos()函数
- 21.7.1 实现作弊模式
- 21.7.2 删除敌人
- 21.7.3 绘制窗口
- 21.7.4 绘制玩家的得分
- 21.7.5 绘制玩家角色
- 21.7.6 碰撞检测
- 21.7.7 游戏结束屏幕
- 21.8 修改Dodger游戏
- 21.9 本章小结
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。