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!

hello.py

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循环

while循环相当于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 数学技巧

技巧1:“负号吃掉它左边的加号”
技巧2:“两个减号合并为一个加号”
技巧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 元组

pygame.display.set_mode()函数和pygame.display.set_caption()函数

18.6 RGB颜色

18.7 字体和pygame.font.SysFont()函数

Font对象的render()方法

18.8 属性

pygame.font.Font对象和pygame.Surface对象的get_rect()方法

18.9 构造函数

Surface对象的fill()方法

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 本章小结

思维导图

Python游戏编程快速上手

防止博客图床图片失效,防止图片源站外链:

http://www.processon.com/chart_image/5e5b2cf7e4b02bc3ad6a0f59.png)

思维导图在线编辑链接:

https://www.processon.com/view/5e5b2cf7e4b02bc3ad6a0f56

posted @ 2020-05-01 12:33  哀莫  阅读(719)  评论(0编辑  收藏  举报

欢迎访问我的主页!