资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,0,Python游戏编程快速上手(第4版),演讲人,2021-11-11,Python游戏编程快速上手(第4版)演讲人2021-11-,1,01,1 交互式Shell,ONE,011 交互式ShellONE,2,1 交互式Shell,1.1.1 整数和浮点数,1.1.2 表达式,01,02,03,04,05,1.1 一些简单的数学知识,01,1.3 语法错误,03,1.5 小结,05,02,1.2 计算表达式,04,1.4 在变量中存储值,1 交互式Shell1.1.1 整数和浮点数 0102,3,02,2 编写程序,ONE,022 编写程序ONE,4,2 编写程序,2.2 连接字符串,2.4 Hello World程序如何工作,2.6 小结,2.1 字符串值,2.3 在IDLE的文件编辑器中编写程序,2.5 命名变量,2 编写程序2.2 连接字符串2.4 Hello World,5,2 编写程序,2.3 在IDLE的文件编辑器中编写程序,2020,2.3.1 创建Hello World程序,01,2021,2.3.2 保存程序,02,2022,2.3.3 运行程序,03,2 编写程序2.3 在IDLE的文件编辑器中编写程序2020,6,2 编写程序,2.4 Hello World程序如何工作,C,B,A,2.4.1 注释,2.4.2 函数:程序中的小程序,2.4.3 终止程序,2 编写程序2.4 Hello World程序如何工作CBA,7,03,3 “猜数字”游戏,ONE,033 “猜数字”游戏ONE,8,3 “猜数字”游戏,3.2 “猜数字”程序的源代码,3.4 用random.randint()函数生成随机数,3.6 流程控制语句,3.1 “猜数字”的运行示例,3.3 导入random模块,3.5 欢迎玩家,3 “猜数字”游戏3.2 “猜数字”程序的源代码3.4 用r,9,3 “猜数字”游戏,3.7 玩家的猜测,3.12 判断玩家是否赢了,3.11 用break语句提早离开循环,3.8 使用int()函数、float()函数、str()函数和bool()函数来转换值,3.9 布尔数据类型,3.10 if语句,3 “猜数字”游戏3.7 玩家的猜测3.12 判断玩家是否赢,10,3 “猜数字”游戏,01,3.13 判断玩家是否输了,02,3.14 小结,3 “猜数字”游戏013.13 判断玩家是否输了023.14,11,3 “猜数字”游戏,3.6 流程控制语句,C,B,A,3.6.1 使用循环来重复代码,3.6.2 组织语句块,3.6.3 for循环语句,3 “猜数字”游戏3.6 流程控制语句CBA3.6.1 使用,12,3 “猜数字”游戏,3.9 布尔数据类型,A,D,B,C,3.9.2 用条件检查True或False,3.9.3 体验布尔值、比较操作符和条件,3.9.4 =和=的区别,3.9.1 比较操作符,3 “猜数字”游戏3.9 布尔数据类型ADBC3.9.2 用,13,04,4 一个讲笑话程序,ONE,044 一个讲笑话程序ONE,14,4 一个讲笑话程序,01,4.1 Jokes游戏的运行示例,02,4.2 Jokes游戏的源代码,0,3,4.3 代码如何工作,0,4,4.4 转义字符,0,5,4.5 单引号和双引号,0,6,4.6 print()的end关键字形参,4 一个讲笑话程序014.1 Jokes游戏的运行示例024,15,4 一个讲笑话程序,4.7 小结,4 一个讲笑话程序4.7 小结,16,05,5 Dragon Realm,ONE,055 Dragon RealmONE,17,5 Dragon Realm,5.2 Dragon Realm的运行示例,5.4 Dragon Realm的源代码,5.6 Dragon Realm中的函数,5.1 如何玩Dragon Realm,5.3 Dragon Realm的流程图,5.5 导入random和time模块,5 Dragon Realm5.2 Dragon Realm,18,5 Dragon Realm,5.8 while语句实现循环,5.10 返回值,5.12 函数形参,5.7 多行字符串,5.9 布尔操作符,5.11 全局作用域和局部作用域,5 Dragon Realm5.8 while语句实现循环5,19,5 Dragon Realm,5.13 显示游戏结果,5.14 决定哪个山洞有友善的龙,5.15 游戏循环,5.16 小结,D,C,A,B,5 Dragon Realm5.13 显示游戏结果5.14,20,5 Dragon Realm,5.6 Dragon Realm中的函数,5.6.1 def语句,5.6.2 调用函数,5.6.3 把函数定义放在哪里,5 Dragon Realm5.6 Dragon Realm,21,5 Dragon Realm,5.9 布尔操作符,5.9.1 and操作符,5.9.2 or操作符,5.9.3 not操作符,5.9.4 布尔操作符的运算,5 Dragon Realm5.9 布尔操作符5.9.1 a,22,5 Dragon Realm,5.15 游戏循环,A,5.15.1 在程序中调用函数,5.15.2 询问玩家要不要再玩一局,B,5 Dragon Realm5.15 游戏循环A5.15.1,23,06,6 使用调试器,ONE,066 使用调试器ONE,24,6 使用调试器,6.1 Bug的类型,02,6.2.1 启动调试器,6.2.2 用调试器单步执行程序,06,01,02,03,04,05,01,6.3 查找Bug,03,6.5 使用断点,05,6.2 调试器,04,6.4 设置断点,06,6.6 小结,6 使用调试器6.1 Bug的类型 026.2.1 启动,25,07,7 用流程图设计Hangman,ONE,077 用流程图设计HangmanONE,26,7 用流程图设计Hangman,7.1 如何玩Hangman,01,7.3 ASCII字符图,0,3,7.5 小结,0,5,7.4.1 生成流程图,7.4.2 流程图的分支,7.4.3 结束或者重新开始游戏,7.4.4 再猜一次,7.4.5 为玩家提供反馈,7.4 用流程图来设计一个程序,0,4,7.2 Hangman的运行示例,0,2,7 用流程图设计Hangman 7.1 如何玩Hangman,27,08,8 编写Hangman的代码,ONE,088 编写Hangman的代码ONE,28,8 编写Hangman的代码,8.6 从单词列表中获取一个神秘单词,8.5 调用方法,8.4 列表数据类型,8.3 常量,8.2 导入random模块,8.1 Hangman的源代码,8 编写Hangman的代码8.6 从单词列表中获取一个神秘,29,8 编写Hangman的代码,8.12 回顾Hangman中的函数,8.11 询问玩家是否想再玩一局,8.10 确保玩家输入一个有效的猜测,8.9 elif语句,8.8 获取玩家的猜测,8.7 向玩家显示游戏板,8 编写Hangman的代码8.12 回顾Hangman中的,30,8 编写Hangman的代码,8.13 游戏循环,8.14 小结,8 编写Hangman的代码8.13 游戏循环8.14 小结,31,8 编写Hangman的代码,8.4 列表数据类型,8.4.1 用索引访问元素,8.4.2 列表连接,8.4.3 in操作符,8 编写Hangman的代码8.4 列表数据类型8.4.1,32,8 编写Hangman的代码,8.5 调用方法,A,B,8.5.2 字符串方法split(),8.5.1 列表方法reverse()和append(),8 编写Hangman的代码8.5 调用方法AB8.5.2,33,8 编写Hangman的代码,8.7 向玩家显示游戏板,C,B,A,8.7.1 list()函数和range()函数,8.7.2 列表和字符串分片,8.7.3 用空格表示神秘单词,8 编写Hangman的代码8.7 向玩家显示游戏板CBA8,34,8.8 获取玩家的猜测,8 编写Hangman的代码,8.8.2 离开while循环,8.8.1 字符串方法lower()和upper(),8.8 获取玩家的猜测8 编写Hangman的代码8.8.2,35,8.13 游戏循环,8 编写Hangman的代码,8.13.2 让玩家输入他们的猜测,8.13.4 判断玩家是否获胜,8.13.6 检查玩家是否输了,8.13.1 调用displayBoard()函数,8.13.3 判断字母是否在这个神秘单词中,8.13.5 当玩家猜错时,8.13 游戏循环8 编写Hangman的代码8.13.2,36,8 编写Hangman的代码,8.13 游戏循环,8.13.7 结束并重新设置游戏,8 编写Hangman的代码8.13 游戏循环8.13.7,37,09,9 Hangman扩展,ONE,099 Hangman扩展ONE,38,9 Hangman扩展,01,02,03,04,05,06,9.1 添加更多的猜测机会,9.2 字典数据类型,9.3 从一个列表中随机选取,9.4 从列表中删除项,9.5 多变量赋值,9.6 向玩家显示单词的分类,9 Hangman扩展0102030405069.1 添加更,39,9 Hangman扩展,9.7 小结,9 Hangman扩展9.7 小结,40,9 Hangman扩展,9.2 字典数据类型,9.2.1 用len()函数获取字典的大小,9.2.2 字典和列表的区别,9.2.3 字典方法keys()和values(),9.2.4 在Hangman中使用单词的字典,9 Hangman扩展9.2 字典数据类型9.2.1 用le,41,10,10 Tic Tac Toe,ONE,1010 Tic Tac ToeONE,42,10 Tic Tac Toe,10.2 Tic Tac Toe的源代码,10.4 导入random模块,10.6 让玩家来选择X或O,10.1 Tic Tac Toe的运行示例,10.3 设计程序,10.5 在屏幕上打印游戏板,10 Tic Tac Toe10.2 Tic Tac Toe,43,10 Tic Tac Toe,10.8 在游戏板上放置一个标记,10.10 复制游戏板的数据,10.12 让玩家输入他们的落子,10.7 决定谁先走,10.9 判断玩家是否获胜,10.11 判断游戏板上的格子是否为空,10 Tic Tac Toe10.8 在游戏板上放置一个标记,44,10 Tic Tac Toe,10.14 从落子列表中选择一个落子,10.16 创建计算机的AI,10.18 小结,10.13 短路求值,10.15 None值,10.17 游戏循环,10 Tic Tac Toe10.14 从落子列表中选择一个,45,10 Tic Tac Toe,10.3 设计程序,10.3.1 用数据表示游戏板,10.3.2 游戏AI,10 Tic Tac Toe10.3 设计程序10.3.1,46,10 Tic Tac Toe,10.8 在游戏板上放置一个标记,1,10.8.1 列表引用,2,10.8.2 在makeMove()中使用列表引用,10 Tic Tac Toe10.8 在游戏板上放置一个标记,47,10 Tic Tac Toe,10.16 创建计算机的AI,1,10.16.1 计算机判断自己能否落子即获胜,3,10.16.3 依次判断角、中心和边,2,10.16.2 计算机判断玩家是否可以落子即获胜,4,10.16.4 判断游戏板是否满了,10 Tic Tac Toe10.16 创建计算机的AI11,48,10 Tic Tac Toe,10.17 游戏循环,10.17.1 决定玩家的符号和谁先走,10.17.3 运行计算机的轮次,10.17.4 询问玩家是否再玩一次,10.17.2 运行玩家的轮次,10 Tic Tac Toe10.17 游戏循环10.17.,49,11,11 推理游戏Bagels,ONE,1111 推理游戏BagelsONE,50,11 推理游戏Bagels,11.2 Bagels的源代码,11.4 导入random并定义getSecretNum(),11.6 复合赋值操作符,11.1 Bagels的运行示例,11.3 Bagels的流程图,11.5 打乱一组唯一数的顺序,11 推理游戏Bagels11.2 Bagels的源代码11,51,11 推理游戏Bagels,11.8 列表方法sort(),11.10 检查字符串中是否只包含数字,11.12 字符串插值,11.7 计算要给出的线索,11.9 字符串方法join(),11.11 游戏的开始,11 推理游戏Bagels11.8 列表方法sort()11,52,11 推理游戏Bagels,11.13 游戏循环,11.14 小结,11 推理游戏Bagels11.13 游戏循环11.14 小,53,LOGO, 推理游戏Bagels,11.5 打乱一组唯一数的顺序,01,11.5.1 用random.shuffle()函数改变列表项的顺序,02,11.5.2 从打乱次序的数中获取神秘数字,LOGO 推理游戏,54,11 推理游戏Bagels,11.13 游戏循环,11.13.1 获取玩家的猜测,11.13.3 判断玩家的输赢,11.13.4 询问玩家是否再玩一局,11.13.2 根据玩家的猜测给出线索,11 推理游戏Bagels11.13 游戏循环11.13.1,55,12,12 笛卡尔坐标,ONE,1212 笛卡尔坐标ONE,56,12 笛卡尔坐标,12.1 网格和笛卡尔坐标,12.2 负数,12.3 计算机屏幕的坐标系,12.4 数学技巧,12.5 绝对值和abs()函数,12.6 小结,12.4.1 技巧1:减号吃掉它左边的加号,12.4.2 技巧2:两个减号合并为一个加号,12.4.3 技巧3:加法的可交换性,12 笛卡尔坐标 12.1 网格和笛卡尔坐标12.2 负数,57,13,13 Sonar Treasure Hunt游戏,ONE,1313 Sonar Treasure Hunt游戏ONE,58,13 Sonar Treasure Hunt游戏,A,E,D,F,B,C,13.2 Sonar Treasure Hunt的源代码,13.3 设计程序,13.5 创建一个新的游戏板,13.4 导入random、sys和math模块,13.6 绘制游戏板,13.1 Sonar Treasure Hunt的运行示例,13 Sonar Treasure Hunt游戏AEDFBC,59,13 Sonar Treasure Hunt游戏,1,13.7 创建随机的藏宝箱,2,13.8 判断一次移动是否有效,3,13.9 在游戏板上进行一次移动,4,13.10 为玩家打印出游戏说明,5,13.11 游戏循环,6,13.12 小结,13 Sonar Treasure Hunt游戏113.7,60,13 Sonar Treasure Hunt游戏,13.6 绘制游戏板,13.6.1 在顶部绘制X轴,13.6.2 绘制海洋,13.6.3 打印出海洋中的行,13.6.4 在游戏板底部绘制X轴坐标,13 Sonar Treasure Hunt游戏13.6 绘,61,LOGO, Sonar Treasure Hunt游戏,13.9 在游戏板上进行一次移动,13.9.1 找到最近的藏宝箱的算法,13.9.2 使用列表方法remove()删除值,13.9.3 获取玩家的移动,LOGO Sona,62,13.11 游戏循环,13 Sonar Treasure Hunt游戏,13.11.2 处理玩家的移动,13.11.4 判断玩家是否赢了,13.11.6 用sys.exit()函数终止程序,13.11.1 为玩家显示游戏的状态,13.11.3 找到一个沉没的藏宝箱,13.11.5 判断玩家是否输了,13.11 游戏循环13 Sonar Treasure Hu,63,14,14 凯撒密码,ONE,1414 凯撒密码ONE,64,14 凯撒密码,14.6 决定加密还是解密,14.5 设置最大键长度,14.4 凯撒密码程序的源代码,14.3 凯撒密码的运行示例,14.2 凯撒密码简介,14.1 密码学和加密,14 凯撒密码14.6 决定加密还是解密14.5 设置最大键,65,14 凯撒密码,01,02,03,04,05,06,14.7 从玩家处得到消息,14.8 从玩家处得到密钥,14.9 加密或解密消息,14.10 程序开始,14.11 暴力破解,14.12 添加暴力破解模式,14 凯撒密码01020304050614.7 从玩家处得到,66,14 凯撒密码,14.13 小结,14 凯撒密码14.13 小结,67,14 凯撒密码,14.9 加密或解密消息,14.9.2 加密或解密每个字母,14.9.1 使用字符串方法find()找到所传递的字符串,14 凯撒密码14.9 加密或解密消息14.9.2 加密或解,68,15,15 Reversegam游戏,ONE,1515 Reversegam游戏ONE,69,15 Reversegam游戏,15.2 Reversegam的运行示例,15.4 导入模块和设置常量,15.6 判断一次落子是否有效,15.1 如何玩Reversegam,15.3 Reversegam的源代码,15.5 游戏板数据结构,15 Reversegam游戏15.2 Reversegam,70,15 Reversegam游戏,01,15.7 判断有效的坐标,02,15.8 计算游戏板的得分,0,3,15.9 获取玩家的棋子选择,0,4,15.10 决定谁先走,0,5,15.11 在游戏板上落下一个棋子,0,6,15.12 复制游戏板数据结构,15 Reversegam游戏0115.7 判断有效的坐标0,71,15 Reversegam游戏,15.14 获取玩家的移动,15.16 在屏幕上打印分数,15.18 游戏循环,15.13 判断一个格子是否在角落上,15.15 获取计算机的移动,15.17 游戏开始,15 Reversegam游戏15.14 获取玩家的移动15,72,15 Reversegam游戏,15.20 小结,15.19 询问玩家是否再玩一局,15 Reversegam游戏15.20 小结15.19 询,73,15 Reversegam游戏,15.5 游戏板数据结构,A,B,15.5.2 创建一个新的游戏板数据结构,15.5.1 在屏幕上绘制游戏板数据结构,15 Reversegam游戏15.5 游戏板数据结构AB1,74,15 Reversegam游戏,15.6 判断一次落子是否有效,15.6.2 发现是否有可以反转的棋子,15.6.1 查看8个方向中的每一个方向,1,2,15 Reversegam游戏15.6 判断一次落子是否有效,75,LOGO, Reversegam游戏,15.7 判断有效的坐标,1,15.7.1 得到所有有效移动的一个列表,2,15.7.2 调用bool()函数,LOGO Reve,76,LOGO, Reversegam游戏,15.15 获取计算机的移动,A,15.15.1 角落移动策略,15.15.2 获取最高得分的移动的列表,B,LOGO Reve,77,15 Reversegam游戏,15.17 游戏开始,15.17.2 运行玩家的轮次,1,3,2,15.17.1 检查僵局,15.17.3 运行计算机的轮次,15 Reversegam游戏15.17 游戏开始15.17,78,16,16 Reversegam AI模拟,ONE,1616 Reversegam AI模拟ONE,79,16 Reversegam AI模拟,16.1 让计算机和自己下棋,16.2 让计算机自己多玩几次,16.3 比较不同的AI算法,16.4 小结,D,C,A,B,16 Reversegam AI模拟16.1 让计算机和自己,80,16 Reversegam AI模拟,16.1 让计算机和自己下棋,16.1.2 模拟程序1的源代码,贰,16.1.1 模拟程序1的运行示例,壹,16.1.3 删除玩家提示并添加一个计算机玩家,叁,16 Reversegam AI模拟16.1 让计算机和自己,81,16.2 让计算机自己多玩几次,16 Reversegam AI模拟,1,16.2.1 模拟程序2的运行示例,2,16.2.2 模拟程序2的源代码,3,16.2.3 记录多次游戏,4,16.2.4 注释掉print()函数调用,5,16.2.5 使用百分数评级AI,16.2 让计算机自己多玩几次16 Reversegam A,82,16.3 比较不同的AI算法,16 Reversegam AI模拟,16.3.2 模拟程序3的AI是如何工作的,16.3.1 模拟程序3的源代码,16.3.3 比较AI,16.3 比较不同的AI算法16 Reversegam AI,83,17,17 创建图形,ONE,1717 创建图形ONE,84,17 创建图形,A,E,D,F,B,C,17.2 pygame中的Hello World,17.3 运行pygame Hello World程序的示例,17.5 导入pygame模块,17.4 pygame Hello World的源代码,17.6 初始化pygame,17.1 安装pygame,17 创建图形AEDFBC17.2 pygame中的Hell,85,17 创建图形,17.8 设置颜色变量,17.10 用一种颜色填充一个Surface对象,17.12 Surface对象的blit()方法,17.7 设置pygame窗口,17.9 将文本写到pygame窗口上,17.11 pygame的绘制函数,17 创建图形17.8 设置颜色变量17.10 用一种颜色填,86,17 创建图形,17.13 将Surface对象绘制到屏幕上,17.14 事件和游戏循环,17.15 小结,17 创建图形17.13 将Surface对象绘制到屏幕上1,87,18,18 动画图形,ONE,1818 动画图形ONE,88,18 动画图形,18 动画图形,89,19,19 碰撞检测,ONE,1919 碰撞检测ONE,90,19 碰撞检测,19 碰撞检测,91,20,20 声音和图像,ONE,2020 声音和图像ONE,92,20 声音和图像,20 声音和图像,93,21,21 带有声音和图像的Dodger,ONE,2121 带有声音和图像的DodgerONE,94,21 带有声音和图像的Dodger,21 带有声音和图像的Dodger,95,感谢聆听,感谢聆听,96,
展开阅读全文