当前课程知识点:Python 交互式程序设计导论 > 第3周 > B 课程视频(计时器) > “神奇时钟”游戏
返回《Python 交互式程序设计导论》慕课在线视频课程列表
同学们,大家好,欢迎来到Python交互式程序设计导论mooc课堂
这一讲,给大家介绍第三周的游戏"神奇的时钟“
当然,时钟,是大家很熟悉的一个日常用品,我们手上戴的手表,也是时钟的一种,我们的手机上也有时钟
计算机电脑也有时钟,很多家里的墙上挂的也有时钟
这一讲,我开始讲如何来完成这个项目
好,首先打开我们的mooc网站,阅读网站上提供的文档,熟悉这个项目的要求
时钟的界面,大家已经看到了
然后,了解这个程序的名称叫做clock.py
这是Python文件的名称
然后,阅读编码的步骤
根据步骤来完成我们的代码编辑
把下面的模板拷贝到pycharm里面去, 就可以开始了
我们看一下,拷过来的模板是这样的
在你动手编写程序之前,先注意看一下
我们提供了四个图片资源和一个声音资源
好, 现在看第一个图片资源,是时钟面板的图片
我们把这个地址拷贝下来,打开浏览器,把它拷贝到浏览器的地址栏
然后回车,看一下,好,这是时钟的面板
注意看一下它的大小,格式是jpg,大小是600*600个像素
也就是一个正方形的时钟面板,宽度600个像素,高度600个像素
好,我们把它拖到桌面
然后再看第二个图片资源,我们也拷贝下来
这是时钟上面的时针,它的上面的图片,看一下,在左侧看到时针这个图片
注意,它的大小呢,是16个像素的宽度,600个像素的高度
这个高度是和我们时钟面版的高度是一样的,也把它拷下来
接着再来看第三幅图片资源,这是分针的图片,我们也把它在浏览器里打开看一下
分针要比时针长一些,同时窄一些,实际上,它的大小,可以看到,宽度12个像素,高度600个像素
我们也把它拖到这里,再看最后一个图片,是秒针的图片资源,拷贝下来
放到这里 ,可以看到,这是秒针的图片,它的大小,宽度是30个像素,高度也是600个像素
把它拖到桌面,这是我们游戏当中要用到的四个图片资源
好的,先打开时针的图片,我们让它显示缩略图
可以看到整个图片的高度,600个像素,其中绿色部分,显示的部分,高度没那么多
而剩下的两端是透明的,所以,在它的画面上我们看不着
实际上,它的高度是600个像素
好, 再来看分钟的图片,也是显示缩略图
我们可以看到,秒针,显示缩略图,这是秒针的图片
最后是时钟面板的图片,我们也把它显示缩略图
好,现在,放在一起,这四幅图放在一起
大家可以注意到,面板600*600像素,正方形,时针,分针,秒针
因此,我们可以认为,只需要定期的,按一定角度旋转时针,分针,秒针,就会产生我们需要的时针效果
接下来,看另外一个资源,还有一个声音资源,播放音效的资源
我们把它拷贝下来,这个地址,注意,这时候,我用的是 浏览器
拷贝进去,直接按回车,可以听到这个音乐的播放效果
好,这样以来, 就说明,我们所有要的这五个资源,网络上都是存在的,访问都没有问题
下面开始做,我们的编码工作
先看一下,我们要完成的几个函数
第一个是获取时间,第一个辅助函数
第二个是按钮事件的处理函数,开启或关闭数字显示的效果
第三个函数是,开启或关闭音乐播放
第四个是时钟事件或者是定时器事件调用的函数
第五个函数,是我们绘制整个时钟的函数屏幕刷新事件
当然,我们还要创建窗口框架,注册事件处理函数
启动时钟,调用一次我们已经完成的gettime
最后启动窗口,这些代码,在前面,我们已经都讲过
这里,要给大家说明,在gettime里面,我们应该考虑这里导入的daytime这个Python包
假设我们用dt来保存daytime,它有一个方法,叫做now(),取出当前的时间, 准确的说,就是取出当前这台计算机的时钟上面,我们这条语句执行的时候,它的时间
一旦有了这个dt以后
dt里面有当前这个时间的年度,dt里面有当前这个时间的月份,dt里面有当前这个时间的日期,dt里面有当前这个时间的小时
当然,还有分钟,还有秒针,以及毫秒
有了这些值,我们就可以计算我们的时钟上面时针,分针,秒针,它应该旋转多少角度,来绘制,以实现整个时钟在运转的效果
同时,也可以计算出,我们要数显的这些信息,数字显示的年月日 时分秒以及十分之一秒等等
剩下的,就是要完成其它的一些函数
这里,我不去多讲了,大家去阅读文档
可以看到文档里的要求,可以按照这些要求去做
还要提一下,就是, 屏幕刷新函数里面,我们应该首先绘制时钟的面板,然后判断是不是需要进行数显
如果要数显,就绘制数显的文字信息,然后,绘制时针,接下来绘制分针,最后绘制秒针
这是因为,在画布上,按照屏幕的方位,有x轴和y轴,而我们人眼基本上是垂直看屏幕的, 因此,我们垂直于x轴和y轴
垂直于这个屏幕的是z轴,先画的是离我们最远的地方,后画的是靠近的地方,准确的说,后画的图像会覆盖先画的图像
因此,这个顺序是很重要的
好了,另外,我们游戏当中有一个按钮,就是播放音乐这个按钮,它有一些特别
正常情况下,一开始程序运行,按下的显示播放音乐 ,我们点它的时候 musicbox,音乐会播放
这时候,要停止播放音乐,这时,我们按钮上的文字,也会显示,停止播放音乐
你要用鼠标点击这个按钮,停止音乐播放
不是任何时候点它都会停止的,而是需要你点整秒上的,也就是说 十分之一秒变成0的时候,这时候才能停止
好,这是我们这个神奇时钟特别的地方
下面,我们看一看,完成的最终运行效果会是什么样子
点击运行,注意看,我们程序运行起来后,一个正常的时钟在运转,这时候,它上面显示时分秒是正常的时间
就是现在是什么时间它就是什么时间,当然,这是由计算机的时间来决定的 你的计算机的时间是准的,那时钟就是准的
好,我们开启数显,关闭数显,开启数显,点击播放音乐
注意要关闭音乐,随意点,是不会关闭的,只有当十分之一秒为0的时候,也就是整秒的时候,我们点击关闭音乐这个按钮 才 关闭音乐的播放
好,现在一旦点中以后,这时候,我们的时钟也停止了运转
时针,分针,秒针,都停止了,数显也停止了
注意,我们再点击播放音乐,正常开始,而且,这个时间还是正确的,现在的时间依然是正确的, 它不会把我们点击的那个时间错误的计算在内
任何时候,你只要重新开始,它的时间都是准确的
好了,这一讲,就这多内容,谢谢大家观看,咱们下次再见
-课程简介
--课程简介
-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周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板