当前课程知识点:Python 交互式程序设计导论 > 第2周 > B 课程视频(输入框、全局变量) > “猫咪藏在哪个房间”游戏
返回《Python 交互式程序设计导论》慕课在线视频课程列表
好,同学们,我们玩一个“猫咪藏在哪个杯子里”的游戏
这里有十六个杯子,编号从0开始一直到15
白老师把这个猫咪藏在一个杯子,我开始猜,如果我猜的不对 , 白老师会告诉我猜得大了还是猜得小了
我就根据他告诉我的情况,然后在另外一个范围去猜,这是折半查找的思路
16个杯子,最坏的情况,可能5次才能猜中
好,现在咱们开始玩这个游戏
下面,我把这个猫咪藏到随机的一个杯子里
不要让我注意到,不要让我知道
把它塞进去,ok, 藏好了
好,16个杯子,正中间应该是7或者8
这两个都是一样的,假设我猜7,猜大了, 那说明这一部分不可能有猫咪了
只能在这里头了,我现在再折半查找
这是1, 2 ,3 ,4 ,5 ,6, 7 ,7个
正中间是这个,我猜3
3,猜小了,猜小了, 它不在这里头,在正中间,猜第三次
5,猜大了
猜大了, 那只能是它
好,再来看一下, 好,谢谢大家
好,下面我们看看如何用python来完成“猫咪藏在哪个房间里”游戏的设置过程
首先,在我们完成这个游戏项目之前
仔细阅读教材中项目二“猫咪藏在哪个房间” 里头给大家提供的文档
包括游戏的说明,程序的说明,编码步骤,评分标准等
当然,也可以在mooc网站阅读我们给大家提供的文档
如果你完全读懂这些文档,那么,接下来,打开你的计算机
保证你的计算机链接到互联网,然后打开pycharm,新建一个项目
名字叫“猫咪藏在哪个房间”
然后,在这个项目当中创建一个程序文件,叫guess_room_number, 就是python文件
然后,在我们的mooc网站上,把第二个项目的模版代码全部选中拷贝下来
然后,在pycharm里头,把它粘贴到我们新创建的python里面
好,粘贴过程中,会看到这样一个情况
我们看到项目的模版,首先是一个注释语句,说明我们程序的一些信息
然后,是一些导入的模块,然后,初始化一些全局变量
然后,我们给了一个图片资源,这个资源有一个网址,最好把这个网址拷贝下来
复制下来,打开浏览器,测试一下
在地址栏输进去,这个地址栏输进我们的地址以后
有一副猫咪的图片,说明使用的计算机已经连到互联网上,可以访问这个图片资源
注意,如果你在设计这个游戏的时候,你的计算机没有连到互联网, 那么,在运行程序的时候可能会报错,就没法正常运行
好,下面看看,我们给大家提供的模版当中,要求大家完成四个函数
第一个new_game,第二个range25,第三个range36,第四个range100, 最后guess_room_number,总共五个函数要求大家去完成
好,我们解释一下这个五个函数它的作用
第一个new_game,是用来初始化全局变量,主要是要生成一个秘密的数字
这个秘密的数字,它的范围是多少呢
第一次运行的时候,它的范围是0到24之间的某个数字
第二次程序运行,可能,点击了三个按钮当中的25个房间,36个房间,100个房间
点击按钮不同,这个猜测范围也就会发生变化
随机,这个秘密数字的范围也会发生变化
因此,剩下的这个三个函数,就是重新设置房间的数量
准确的说,就是重新设定这个秘密数字它的范围
比如说,第一个数字是从0到25不包括25,第二个数字是0到36不包括36, 第三个数字是0到100不包括100
最后一个函数是我们的函数逻辑
主要的游戏功能实现的地方,同时,也是文本输入框那个控件的事件处理函数
好的,下面,我们来运行一下这个程序,看看这个游戏的效果
好,注意看,第一次,运行的时候,这两个提示
新一轮游戏开始,你应当在0到24之间猜测一个数字,总共有5次猜测机会, 请输入你猜测的房间号并按回车键
我们认为,折半,从正中间去输,我猜测是12,好, 看这边的输出
你猜测的房间号为12,太大了,还剩4次猜测机会
那就应该在小的这一部分,从0到11这房间去猜
我们猜多少呢,5,好,太小了
还有三次机会,那在6,7,8,9,10,11之间去猜
我们猜8,好,猜得太小了
在9,10,11之间,我还有两次机会
我猜测10,太大了,往小猜
猜9,那一定是9,我们猜测对了
你现在点击36个房间,好,现在注意右边的输出
新的游戏开始,你应当在0到35之间猜测一个数字,总共有6次猜测机会
如果点100个房间呢,0到99 这个提示是:新一轮游戏开始,你应当在0到99之间猜测 一个数字,总共有七次猜测机会
依此,我们的游戏可以玩下去
这里体现了折半查找的思想
好,这一讲就给大家介绍到这里
希望大家喜欢这个游戏,我们下次再见
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板