展开全部

主编推荐语

游戏开发初学者必备指南。

内容简介

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 本章小结
展开全部

评分及书评

4.3
3个评分
  • 用户头像
    给这本书评了
    5.0
    代码好难学

    学了很久的 python, 还是没有领悟要领。

      转发
      评论
      用户头像
      给这本书评了
      3.0
      还可以

      希望有机会让孩子看看

        转发
        评论

      出版方

      人民邮电出版社

      人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。