Python做一个计时器的动画
一、问题
在做连连看的时候需要加一个计时器的动画,这样就完成了计时功能的设计。
二、解决
主要思路:
1、先产生一个画布,用深颜色填充满。
2、产生一个新的矩阵用来覆盖画布,背景用白色,就可以渲染出来递减的感觉
3、动态改变填充的位置,就完成增加和减少时间的动画效果
# 时间画布、动画
self.time_counter = tk.Canvas(self.root, width=22, height=180, bg="yellow")
self.time_counter.place(x=615, y=80) # 时间显示
self.show_time = tk.Label(self.root, bg="lightgrey", fg="purple", font="叶根友毛笔行书2.0版 15 bold", text=f"剩余时间\n{self.__time}s")
self.show_time.place(x=590, y=20) # 计时函数
def counter(self):
"""
计时柱的构建
:return:
"""
try:
fill_line = self.time_counter.create_rectangle(1.5, 1.5, 23, 0, width=0, fill="white")
while self.__cycle >= 0: # self.time 做循环量处理
self.n += self.__scalar
# 移动开始减少
self.time_counter.coords(fill_line, (0, 0, 80, self.n))
self.root.update()
self.__time -= 1
self.show_time.configure(text=f"剩余时间\n{self.__time}s", fg="purple")
time.sleep(1.0) # 控制进度条流动的速度 1秒一次
# 时间结束 游戏结束 退出
if self.__time == 0:
tk.messagebox.showinfo("Tip", f"最后分数:{self.__score}")
self.__game_start = False
exit()
self.__cycle = self.__time # 保证了和时间的一致性
except Exception as e:
_ = e.__traceback__
exit() # 需要动态处理
def detail(self):
"""
消完之后做加分处理 加时处理
:return:
"""
# 加分处理
self.__score += self.__score_level * self.__score_base
self.show_score.configure(text=f"分数\n{self.__score}", fg="red") # 加时处理
# 由于一秒一减少 所以self.n的值和self.__time的值一样
self.__time += self.__add_time
self.n -= self.__scalar * self.__add_time
# 将溢出的全部删除
if self.__time >= self.__large_time:
self.show_time.configure(text=f"剩余时间\n{self.__large_time}s", fg="purple")
self.__time = self.__large_time
self.n = 0
else:
self.show_time.configure(text=f"剩余时间\n{self.__time}s", fg="purple")
三、结果呈现
四、总结
1、在使用的过程中,需要考虑循环的一致性,因此要采取while进行循环,而不是for。
2、为了保证在任何情况下都可以使用,因此我用速率来控制增加量
3、对游戏能否继续进行,进行判断不可以退出游戏
五、参考
如何做一个进度条,反过来就是一个时间计时器
GitHub链接:https://github.com/pzq7025/game
Python做一个计时器的动画的更多相关文章
- 用Python做一个知乎沙雕问题总结
用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...
- 使用python做一个IRC在线下载器
使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...
- 用python做一个搜索引擎(Pylucene)
什么是搜索引擎? 搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分”.如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般 ...
- 用css3做一个求婚小动画
概述 本案例主要是运用到了css3的animation.keyframes.transform等属性,熟悉了,就可以做更多的其他动画效果,这几个属性功能非常强大. 详细 代码下载:http://www ...
- 在树莓派上用 python 做一个炫酷的天气预报
教大家如何在树莓派上自己动手做一个天气预报.此次教程需要大家有一定的python 基础,没有也没关系,文末我会放出我已写好的代码供大家下载. 首先在开始之前 需要申请高德地图API,去高德地图官网注册 ...
- 媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。
最近某音上的动漫特效特别火,很多人都玩着动漫肖像,我媳妇儿也不例外.看着她这么喜欢这个特效,我决定做一个图片处理工具,这样媳妇儿的动漫头像就有着落了.编码 为了快速实现我们的目标,我们 ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...
- 一步步用svg做一个声波扩散动画
有个项目需要在某个坐标显示一个声波扩散(不知道这个表达对不对)的动画. 这种需求一般做法有几种,一种做成gif图片,然后贴上去,一种是用html+css3完成,要么就是画上去,这画又分两种,一种是Ca ...
- [Python] 用python做一个游戏辅助脚本,完整思路
一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/Py ...
随机推荐
- AI:WEB:1 Walkthrough
AI: Web: 1 Vulnhub Walkthrough靶机下载:https://www.vulnhub.com/entry/ai-web-1,353/测试方法: Nmap网络扫描 浏 ...
- 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)
1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...
- mysql 连接数用完,root也无法登陆的处理方法
gdb -p $(pidof mysqld) -ex "set max_connections=1500" -batch 使用 gdb 临时调大 参数 max_connection ...
- linux软连接和硬链接(总结)
参考博客: https://www.cnblogs.com/fengdejiyixx/p/10821820.html https://www.runoob.com/linux/linux-comm-l ...
- Django框架(一)-- Django简介
django(Python Web框架) Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗 ...
- springboot+thymeleaf 实现图片文件上传及回显
1. 创建一个springboot工程, 在此就不多说了(目录结构). 2. 写一个HTML页面 <!DOCTYPE html> <html lang="en" ...
- Linux文件服务管理之vsftpd
简介 vsftpd是 "very secure FTP deamon"的缩写,是一个完全免费,开源的ftp服务器软件. 特点 小巧轻快,安全易用,支持虚拟用户.支持带宽限制等功能. ...
- IE zoom:1
overflow:hidden zoom:1 一起出现克服IE6 bug display:inline-block display:inline zoom:1 一起出现克服IE6bug
- 12-C#笔记-可空类型
区别于C++,C#定义的NULL和0不同.更严格. C#的基本类型,区分为可空和不可空 主要涉及两个符号 单问号? 双问号?? 示例如下: using System; namespace Calcul ...
- qt中窗体全屏
原文地址:https://www.cnblogs.com/wiessharling/p/3750461.html 近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一 ...