一、问题
在做连连看的时候需要加一个计时器的动画,这样就完成了计时功能的设计。

二、解决
主要思路:

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做一个计时器的动画的更多相关文章

  1. 用Python做一个知乎沙雕问题总结

    用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...

  2. 使用python做一个IRC在线下载器

    使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...

  3. 用python做一个搜索引擎(Pylucene)

    什么是搜索引擎? 搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分”.如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般 ...

  4. 用css3做一个求婚小动画

    概述 本案例主要是运用到了css3的animation.keyframes.transform等属性,熟悉了,就可以做更多的其他动画效果,这几个属性功能非常强大. 详细 代码下载:http://www ...

  5. 在树莓派上用 python 做一个炫酷的天气预报

    教大家如何在树莓派上自己动手做一个天气预报.此次教程需要大家有一定的python 基础,没有也没关系,文末我会放出我已写好的代码供大家下载. 首先在开始之前 需要申请高德地图API,去高德地图官网注册 ...

  6. 媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。

    ​    最近某音上的动漫特效特别火,很多人都玩着动漫肖像,我媳妇儿也不例外.看着她这么喜欢这个特效,我决定做一个图片处理工具,这样媳妇儿的动漫头像就有着落了.编码    为了快速实现我们的目标,我们 ...

  7. 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...

  8. 一步步用svg做一个声波扩散动画

    有个项目需要在某个坐标显示一个声波扩散(不知道这个表达对不对)的动画. 这种需求一般做法有几种,一种做成gif图片,然后贴上去,一种是用html+css3完成,要么就是画上去,这画又分两种,一种是Ca ...

  9. [Python] 用python做一个游戏辅助脚本,完整思路

    一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/Py ...

随机推荐

  1. mysql的常用查询创建命令

    查看所有数据库Show databases;创建数据库Create database 数据库名删除数据库Drop database 数据库名创建表CREATE TABLE t_bookType(   ...

  2. mysql后台线程详解

    1.mysql后台线程 mysql后台线程主要用于维持服务器的正常运行和完成用户提交的任务,主要包括:master thread,read thread,write thread,redo log t ...

  3. vscode vue 去掉语法提示

    在vscode中,点击file->preferences->settings, 然后输入vetur, 滚到最下面,那个勾去掉,然后关闭,重启vscode就可以了

  4. 深入理解MDL元数据锁

    前言:  当你在MySQL中执行一条SQL时,语句并没有在你预期的时间内执行完成,这时候我们通常会登陆到MySQL数据库上查看是不是出了什么问题,通常会使用的一个命令就是 show processli ...

  5. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  6. 程序员学习photoshop

    对于一个程序员来说,掌握photoshop的一些基本操作是必要的. photoshop很简单,很多策划都会的. 为什么策划要会photoshop? 答案: 1:photoshop很简单 2:多掌握一门 ...

  7. nc用法

    NC 在客户端 和 服务器执行------------------------------------------------------------------------------------- ...

  8. keil中使用——变参数宏__VA_ARGS__

    本文说的__VA_ARGS__,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C99规范中增加的. __VA_ARGS__详情内容 1.关于__VA_ARGS__ __VA_ARG ...

  9. Fish eating fruit 沈阳网络赛(树形dp)

    Fish eating fruit \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 大体的题意就是给出一棵树,求每一对点之间的距离 ...

  10. JavaScript基础09——事件驱动

    1.事件驱动 js控制页面的行为是由事件驱动的.          什么是事件?(怎么发生的)     事件就是js侦测到用户的操作或是页面上的一些行为       事件源(发生在谁身上)     引 ...