Python编程 制作一个超级浪漫的新年倒计时(附源代码)

news2025/7/11 7:56:31

  • 作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

前言

一.新年介绍

二.代码介绍

1.应用的技术

(1)Pygame 库(做窗口)

(2)时间函数 (datetime)

(3)math库的简介

三.效果展示

四、实现步骤 

1.调用 pygame 库

 2. 调用时间函数和数学函数

3.初始化pygame (设置窗口宽高大小与标题)

4.装载背景图片

5.设置字体

6.设置一个文本框

7.设置过年时间与事件退出

8.取得现在时间并且计算到新年时间

9.刷上时间背景窗口

五、编码实现(全部源代码)


前言

快新年了~本章将会讲解如何利用Python编程中利用pygame库进行新年倒计时。


一.新年介绍

新年,即一年的第一天,为世界多数国家通行的节日。世界各国,特别是古代,新年都有不同的日期,现代世界多数国家定为公元制纪年的1月1日。现代中国将“元旦”称为“公历新年”,将“春节”称为“农历新年”。当日,人们会以各种不同的方式庆祝新年的到来。


二.代码介绍

1.应用的技术

(1)Pygame 库(做窗口)

Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,它是一个免费、开源的第三方软件包,支持多种操作系统,具有良好的跨平台性(比如 Windows、Linux、Mac 等)。Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库)基础上开发而来,其目的是取代 PySDL。


(2)时间函数 (datetime)

在Python程序里,为了表示日期和时间,我们需要借助datetime模块。


(3)math库的简介

math库是Python提供的内置数学类函数库,因为复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整数和浮点数运算。
math库一共提供了4个数学常数和44个的数。44个教学的数共分为4大类:16个数值表示的教、8个幂对数的数、16个二角对数的数和4个高等特殊函数。


三.效果展示


四、实现步骤 

1.调用 pygame 库

这个库需要单独安装 安装很简单cmd命令行 pip  install  pygame

import pygame  # 调用 pygame 库  这个库需要单独安装 安装很简单cmd命令行 pip  install  pygame
import sys
from pygame.locals import *

 2. 调用时间函数和数学函数

import datetime  # 调用时间函数  下面  time 也是时间函数
from datetime import datetime
from datetime import date
from datetime import time
import time
import math  # 调用数学函数

3.初始化pygame (设置窗口宽高大小与标题)

pygame.init()  # 初始化 pygame

size = width, height = 550, 400  # 设置pygame窗口的 宽和高

screen = pygame.display.set_mode(size)  # screen 设置窗口大小是 size
pygame.display.set_caption("我是咸鱼")  # 设置窗口顶部的标题

4.装载背景图片

background = pygame.image.load("image/bground1.png").convert()# 装载背景图片

在image文件中图片名bground1.png。


5.设置字体

f1 = pygame.font.SysFont('方正粗黑宋简体', 30)  # 设置两个字体 大小 30 和 50 样式  幼圆
f = pygame.font.SysFont('方正粗黑宋简体', 50)

注意:如果呈现字体这样的情况。

 通过这个命令查看 pygame 支持的字体格式,然后写入支持的字体

 

import pygame
print (pygame.font.get_fonts())

6.设置一个文本框

设置文本框并调节位置

text1 = f1.render("距离春节过年还有:", True, (0, 0, 0))  # 设置一个文本框

textrect = text1.get_rect()  # 取得文本框的位置矩形大小
textrect.center = (150, 100)  # 设置文本框中心位置为窗口坐标的 (150,100)的位置

7.设置过年时间与事件退出

spring = datetime(2023, 1, 22, 0, 0)  # 给定过年正月的具体时间, datetime 可以将参数变为时间格式
while True:
    for event in pygame.event.get():  # 取事件队列中的值如有 QUIT 就推出游戏
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

8.取得现在时间并且计算到新年时间

today = datetime.now()  # 取得现在的时间
    day = (spring - today).days  # 用春节的时间减现在的时间 得到天数
    second = (spring - today).seconds  # 得到秒数
    sec = second % 60  # 分别算出 具体秒数  分钟数 和 小时数
    minute = second / 60 % 60
    hour = second / 60 / 60
    if hour > 24:  # 如果小时大于24就减掉24
        hour = hour - 24
    hour = math.floor(hour)  # 去掉hour 和 minute 的小数部分
    minute = math.floor(minute)

9.刷上时间背景窗口

a = str(day) + "天" + str(hour) + '小时' + str(minute) + "分钟" + str(sec) + "秒" + "\n"
    screen.blit(background, (0, 0))  # 在pygame 窗口上刷上背景图
    screen.blit(text1, textrect)  # 刷上固定文字
    text = f.render(str(a), True, (255, 0, 0))  # 刷上时间数
    textrec = text.get_rect()
    textrec.center = (300, 200)
    screen.blit(text, textrec)
    pygame.display.flip()  # 刷新窗口
    time.sleep(1)  # 停留一秒钟

五、编码实现(全部源代码)

import pygame  # 调用 pygame 库  这个库需要单独安装 安装很简单cmd命令行 pip  install  pygame
import sys
from pygame.locals import *

import datetime  # 调用时间函数  下面  time 也是时间函数
from datetime import datetime
from datetime import date
from datetime import time
import time
import math  # 调用数学函数

pygame.init()  # 初始化 pygame

size = width, height = 550, 400  # 设置pygame窗口的 宽和高

screen = pygame.display.set_mode(size)  # screen 设置窗口大小是 size
pygame.display.set_caption("我是咸鱼")  # 设置窗口顶部的标题

background = pygame.image.load("image/bground1.png").convert()# 装载背景图片

f1 = pygame.font.SysFont('方正粗黑宋简体', 30)  # 设置两个字体 大小 30 和 50 样式  幼圆
f = pygame.font.SysFont('方正粗黑宋简体', 50)

text1 = f1.render("距离春节过年还有:", True, (0, 0, 0))  # 设置一个文本框

textrect = text1.get_rect()  # 取得文本框的位置矩形大小
textrect.center = (150, 100)  # 设置文本框中心位置为窗口坐标的 (150,100)的位置

spring = datetime(2023, 1, 22, 0, 0)  # 给定过年正月的具体时间, datetime 可以将参数变为时间格式
while True:
    for event in pygame.event.get():  # 取事件队列中的值如有 QUIT 就推出游戏
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    today = datetime.now()  # 取得现在的时间
    day = (spring - today).days  # 用春节的时间减现在的时间 得到天数
    second = (spring - today).seconds  # 得到秒数
    sec = second % 60  # 分别算出 具体秒数  分钟数 和 小时数
    minute = second / 60 % 60
    hour = second / 60 / 60
    if hour > 24:  # 如果小时大于24就减掉24
        hour = hour - 24
    hour = math.floor(hour)  # 去掉hour 和 minute 的小数部分
    minute = math.floor(minute)

    a = str(day) + "天" + str(hour) + '小时' + str(minute) + "分钟" + str(sec) + "秒" + "\n"
    screen.blit(background, (0, 0))  # 在pygame 窗口上刷上背景图
    screen.blit(text1, textrect)  # 刷上固定文字
    text = f.render(str(a), True, (255, 0, 0))  # 刷上时间数
    textrec = text.get_rect()
    textrec.center = (300, 200)
    screen.blit(text, textrec)
    pygame.display.flip()  # 刷新窗口
    time.sleep(1)  # 停留一秒钟






创作不易,求关注,点赞,收藏,谢谢~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目:springboot电影推荐网站

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 springboot电影推荐网站。本系统采用企业级开发标准,使用SpringBoot架构,数据访问层采用Spring Data Jpa,业…

工具(二):Nginx 扩展 OpenResty

OpenResty 介绍OpenResty 原理Nginx 模块Nginx的 lua插载点案例 配置模板nginx.conf通过Lua找到静态文件 — 商品页通过Lua 获取 redis 只返回 — 库存test 其他Demo MysqlOps.luaRedisExtOps.luaredisOps.lua 辅助工具类说明 自动生成静态页FTP 工具 Nginx_有5大优点&#x…

职场经验:游戏测试的主要工作及主要流程

01 游戏测试主要内容 1、功能测试 功能测试是游戏测试中最常见的模式,主要测试方法为黑盒测试 功能测试主要用来验证功能是否符合需求设计 功能测试主要考虑正确性,而不考虑游戏底层结构及代码错误 功能测试通常从界面着手开始测试,尽量…

【架构师(第五十一篇)】 服务端开发之技术方案设计

接口设计 把 server 端当做一个黑盒,它将如何与前端通讯? 功能范围 B 端,用户注册,作品管理,模板管理编辑器,单个作品的内容获取,修改,预览和发布 功能拆分 用户信息相关作品管…

线上牛奶配送

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 基于Java的线上牛奶配送系统的设计与实现 风网站前台:网站介绍、联系我们、公告信息、套餐类型、牛奶套餐、…

Linux-4 文件管理

Linux-4 文件管理 文件管理概述 谈到Linux文件管理,首先我们需要了解的是,我们要对文件做些什么事?其实无非就是对一个文件进行创建,复制,移动,查看,编辑,压缩,查找&am…

自己个人拥有一个可以支付功能的网站?当然可以了!保姆级演示!

文章目录前提条件演示应用申请开通和配置应用创建应用配置代码开发后端实例前端代码实例源码前提条件 这是必要条件!!! 这是必要条件!!! 这是必要条件!!! 开通当面付&am…

人脸检测和对齐算法MTCNN

1. 概述 人脸识别在实际的生活中有着广泛的应用,得益于深度学习的发展,使得人脸识别的准确率得到大幅度提升。然而,为了做好人脸识别,第一步需要做的是对人脸检测,主要是通过对图片分析,定位出图片中的人脸…

Java项目:springboot网上点餐系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 SpringBoot在线订餐系统项目。主要功能说明: 分为两个角色,餐厅老板、普通用户 餐厅老板可以登录,注册&…

质量不错的蓝牙耳机有哪些?2023年值得选购的四款蓝牙耳机

现如今,蓝牙耳机越多人使用,不同于有线耳机,蓝牙耳机更为方便,没有线束的困扰,走到哪也不用带上手机一起,特别便利。然而,随着蓝牙耳机市场的旷大,各种类型各种样式的耳机五花八门&a…

C++ 实现并查集结构

前言 并查集一般用于多元素,多集合的查找问题; 听说很有用,但是平时好像确实没有怎么见过。。 leetcode典型例题:岛屿数量 一、原理 其实并查集的每个小集合就是一张有向图,只不过是所有子节点指向父节点的图结构。…

认证鉴权对于 API 网关的重要性

认证鉴权作为 API 网关不可或缺的能力,已然成为用户在选型 API 网关时考量的重要因素之一。 作者钱勇,API7.ai 开发工程师,Apache APISIX Committer 在当下云原生越发成熟的环境下,API 网关最核心的功能可以概括为:连接…

高品质蓝牙耳机排行榜,值得入手的四款蓝牙耳机分享

2023年即将到来,还有哪些蓝牙耳机值得大家购买呢?蓝牙耳机在我们日常生活中发挥着很大作用。无论是听歌还是通话,又或者是运动健身、玩游戏等,都常见大家使用。同样也伴随着蓝牙耳机市场的壮大,五花八门的耳机层出不穷…

【C语言进阶】进来抄作业,完善你的通讯录(软工期末大作业可用)

目录 🥰前言🥰: 一、输入合法性检测🤠: ①.对“ 联系方式 ”的合法性检测: ②.对“年龄”进行合法性检测: 二、字典排序🤑: 三、反馈优化🤯: …

Python 圣诞树代码

一、前言 1.本章将会讲解Python编程 实现圣诞树效果! 2.圣诞节介绍 基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会开始在12月25日过此节。12月25日…

现在转行计算机如49年入国军?

阿里,腾讯等互联网大厂最近不太安宁,裁员消息频出,无风不起浪,裁员年年有,今年特别多。于是不少打算入行或者已经入行计算机的同学开始担忧,如今入行计算机,怎么有点49年入国军的赶脚&#xff1…

Android面试题及答案整理(2023最新版)持续更新中......

倒霉的时候总会想起福祸相依,但你会发现倒霉起来没完没了,就是看不到传说中的“福” 年初被裁了,我会安慰自己,此处不留爷自有留爷处,然后踏入找工作的行列;没有面试邀请,我会告诉自己&#xf…

倒在转“码”路上的文科生,文科生也能转行做IT吗?

近期,一篇《倒在转“码”路上的文科生》火了。 这也让关于“文科转码”的话题引起了一番热度,由于大环境不佳,使得毕业生就业成为了一个难度,其中文科生相较而言,选择更少,因此,让不少学子有了…

Java项目:springboot酒店宾馆管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 springboot酒店宾馆管理系统。该系统为后管系统,无前台。主要分三种角色:管理者/工作人员/前台人员。 主要功能有&…

网络安全方向好吗?

我就在这个行业,今年刚毕业,民办二本,目前武汉,薪资就没必要说了,高就对了。 这个行业优势就是工资高,缺点就需要一直学,卷得要死,不是跟别人卷,而是自己卷,…