Python3,我把新年祝福写在“雨“中,你看,雨一直下,气氛还算融洽,在同个屋檐下....

news2024/12/27 11:14:10

新年愿望写在"雨"中

  • 1、引言
  • 2、代码实战
    • 2.1 模块介绍
      • 2.1.1 Pygame 介绍
      • 2.1.2 Pygame的display介绍
      • 2.1.3 Pygame的event介绍
      • 2.1.4 Pygame的font介绍
    • 2.2 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,2023年了, 你有啥愿望啊?
小鱼:这, 我可以选择不告诉你吗?
小屌丝:可以选择不告诉我,但是,你自己憋着,不难受吗?
小鱼:… 我可以告诉别人吗?
小屌丝:… 还有谁能像我,认真听你的愿望。
小鱼:这2023年刚开始,你这是来给我添堵,故意的??
小屌丝:既然你不想告诉我,那我也不勉强了,毕竟…
小鱼:你说话,说一半,留一半,不憋得难受吗?
小屌丝:习惯了, 反正, 我不难受,难受的就是别人!
小鱼:你可以啊, 长大了, 翅膀硬了。
小屌丝:别这么说, 毕竟, 我还有求于你。
小鱼:我可以拒绝吗?
小屌丝:我可以说拒绝无效吗?
小鱼:…
小屌丝:我在某音看到一个特效,蛮好的, 想让你帮我搞一下。
小鱼:深呼吸…深呼吸… 好吧, 你说吧,啥特效。

特效

小屌丝:为了看的更直观, 我再放个截个图。

在这里插入图片描述
小鱼:嗯,这个,我知道的。雨一直下,气氛不再融洽,在同个屋檐下 你渐渐…
小屌丝:停,停,停,打住。你咋还唱上了。
小鱼:哎唛呀… 入景了。
小屌丝:可别正没用的, 咱们要干正事了。
小鱼:好好好, 那咱,就趁着新年, 许个愿望吧。
小屌丝:你瞅瞅, 这立flag,还得我鱼哥。
在这里插入图片描述

2、代码实战

2.1 模块介绍

2.1.1 Pygame 介绍

在这里,我们要用到的第三方库是 Pygame
我相信,关于pygame,有些同学还是很陌生的,这里,我也是简单的唠叨几句:

  • Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发;
  • Pygame 是一个高可移植性的模块可以支持多个操作系统,是跨平台Python模块,为游戏而设计的库;
  • Pygame是免费的库;

2.1.2 Pygame的display介绍

display模块常用函数介绍

  • pygame.display.init():初始化display 模块;
  • pygame.display.quit():结束display 模块;
  • pygame.display.get_init():如果display已经初始化,则返回True;
  • pygame.display.set_mode():初始化一个准备显示的窗口;
  • pygame.display.get_surface():获取当前显示的Surface对象;
  • pygame.display.flip():更新整个待显示的 Surface 对象到屏幕上;
  • pygame.display.list_modes():获取全屏模式下可使用的分辨率;

2.1.3 Pygame的event介绍

event模块常用函数介绍

  • pygame.event.pump() : 让 Pygame 内部自动处理事件 ;
  • pygame.event.get() : 从队列中获取事件;
  • pygame.event.poll() : 从队列中获取一个事件 ;
  • pygame.event.wait() — 等待并从队列中获取一个事件;
  • pygame.event.peek() : 检测某类型事件是否在队列中 ;
  • pygame.event.clear() :从队列中删除所有的事件 ;
  • pygame.event.event_name() : 通过 id 获得该事件的字符串名字;
  • pygame.event.set_blocked() : 控制哪些事件禁止进入队列 ;
  • pygame.event.set_allowed(): 控制哪些事件允许进入队列 ;
  • pygame.event.get_blocked() :检测某一类型的事件是否被禁止进入队列;
  • pygame.event.set_grab() : 控制输入设备与其他应用程序的共享 ;
  • pygame.event.get_grab() : 检测程序是否共享输入设备 ;
  • pygame.event.post() :放置一个新的事件到队列中;
  • pygame.event.Event(): 创建一个新的事件对象;

2.1.4 Pygame的font介绍

font模块常用函数介绍

  • pygame.font.init() : 初始化字体模块;
  • pygame.font.quit(): 还原字体模块;
  • pygame.font.get_init() : 检查字体模块是否被初始化;
  • pygame.font.get_default_font() : 获得默认字体的文件名;
  • pygame.font.get_fonts() : 获取所有可使用的字体;
  • pygame.font.match_font() : 在系统中搜索一种特殊的字体;
  • pygame.font.SysFont() :从系统字体库创建一个 Font 对象 类;

2.2 代码示例

了解了Pygame的模块的基本使用方法, 我们就来代码实现。

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-01-01
# @Author : Carl_DJ
'''
实现功能:
    新年愿望代码雨
'''

import random
import pygame

# 设置窗口的尺寸
Windows_width = 1000
Windows_heigh = 800

#创建代码雨窗口
pygame.init()
winsur = pygame.display.set_mode((Windows_width,Windows_heigh))

# 设置文字间距
font_px = 18

#设置文字大小
font_a = pygame.font.SysFont('',26)
bg_suface = pygame.Surface((Windows_width,Windows_heigh),flags = pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0,0,0,26))
#填充
winsur.fill((0,0,0))

# 设置代码雨的内容
message =  '2023 HappyNewYear! 2023HappyNewYear! 2023 HappyNewYear!'

#设置字体及颜色
texts = [font_a.render(message[i],True,(10,255,255)) for  i in range(40)]

# 设置屏幕显示比例,防止字幕超过屏幕
colum = int(Windows_width/ font_px)
drops = [0 for i in range (colum)]

# 让字幕一直显示,避免一闪而过的尴尬
while True:
    #从队列中获取
    for event in pygame.event.get():
        #添加判断,超过则退出
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.KEYDOWN:
            change = pygame.key.get_pressed()
            if change[30]:
                exit()
    # 设置下落速度为50ms
    pygame.time.delay(50)

    #重新编译图像
    winsur.blit(bg_suface,(0,0))
    for i in range(len(drops)):
        text = random.choice(texts)
        #重排每个坐标点
        winsur.blit(text,(i * font_px,drops[i] * font_px))
        drops[i] += 1
        #禁止行数超过屏幕的高
        if drops[i] * 10 > Windows_heigh or random.random() > 0.95:
            drops[i] = 0
    pygame.display.flip()

执行效果

新年祝福

我再上一个截图,让你看的更直观
在这里插入图片描述

3、总结

看到这里, 今天的分享就要结束了。
今天主要介绍的是Pygame库的font、display、event等常用模块。
现在再回顾功能的实现逻辑, 其实也不算太难嘛。
你看, 也就 70多行代码呢。
2023,你肯定行的。

新年了,小鱼也给看到这篇博文的大佬们送上祝福:

  • 心圆梦圆, 团团圆圆
  • 财源福源, 左右逢源
  • 情缘友缘, 相逢有缘
  • 心愿祝愿,愿愿随心

最后再唠叨一句:

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO 博客专家
  • 51认证讲师
  • 金牌面试官

关注,带你学习更多更有趣的Python知识。

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

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

相关文章

同消费互联网时代的轰轰烈烈相比,产业互联网似乎低调了许多

毫无疑问的是,一场衍生于产业的深度变革正在上演。在这样一场深度变革之中,曾经看似无法改变的存在,有了进化的可能性;曾经让玩家们望而却步的领域,有了进军的可能性。如果对这样一场深度变革进行一次总结的话&#xf…

测试分类那么多,哪些是你最需要掌握的内容?

目录 一、按照测试对象分类 1.1、可靠性测试 1.2、容错性测试 1.3、安装卸载测试 1.4、内存泄漏测试 1.5、弱网测试 二、按照是否查看代码分类 2.1、黑盒测试(系统测试) 2.2、白盒测试(单元测试) 2.3、灰盒测试&#xff0…

[数据结构1-1] 线性表

P3156 【深基15.例1】询问学号 题目描述 有 n ( n≤210^6) 名同学陆陆续续进入教室。我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出。上课了,老师想知道第 i个进入教室的同学的学号是什么(最先进入…

浅谈IT自动化运维体系

大家好,今天我们来简单介绍一下 IT自动化运维的体系。 随着IT运维体系的不断发展,IT自动化运维已经成为IT运维体系的重要组成部分,并将随着信息化的发展发挥着越来越重要的作用。面对复杂的业务和多样化的用户需求,IT架构体系需要…

防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18

奉行长期主义的开发者都有一个共识:对于服务器来说,数据备份非常重要,因为服务器上的数据通常是无价的,如果丢失了这些数据,可能会导致严重的后果,伴随云时代的发展,备份技术也让千行百业看到了…

LINUX提权之信息收集篇

前言 准备开一个新坑,最近在学linux提权,于是打算用几篇文章来记录一下linux提权的重要知识点。首先第一篇文章介绍一下linux权限的基础信息以及如何进行信息收集。 LINUX权限简介 因为我们要学习权限提升,所以在学习提权之前我们先了解一…

ThinkPHP多语言文件包含RCE(QVD-2022-46174)

漏洞范围 v6.0.0<ThinkPHP<v6.0.13v5.0.0<ThinkPHP<5.0.12v5.1.0<ThinkPHP<5.1.8 需开启多语言选项&#xff0c;以thinkPHP6版本为例 在自定义中间件定义文件app/middleware.php中添加\think\middleware\LoadLangPack::class php需安装pearcmd拓展,并且开…

文档控件Aspose.words for.java 授权须知

支持的平台 Aspose.Words 可作为 .NET、Java、C 和 Python 的四种不同产品使用&#xff0c; .NET Framework.NET Standard 2.0Xamarin.AndroidXamarin.iOSXamarin.MacCOMMonoWindows Azure 系统要求 任何可以运行 Java Runtime Environment (JRE) 的操作系统都可以运行 Aspo…

02FPGA的巨大优势

在FPGA诞生的初期&#xff0c;计算机研究员是最先感受到FPGA的巨大优势的。 在此之前&#xff0c;要想实现一个新计算机体架构的设计想法&#xff0c;必须要开发一个ASIC作为原型&#xff0c;在面板上安装很多个体积庞大的IC。 但是&#xff0c;与这些需要投入巨大成本和精力…

I2C上拉电阻的选择-计算公式

I2C一般为开漏结构&#xff0c;需要在外部加上拉电阻&#xff0c;常见的阻值有1k、1.5k、2.2k、4.7k、5.1k、10k等。 但是应该如何根据开发要求选择合适的阻值呢&#xff1f; 假设SDA是低电平时&#xff0c;即MOS管导通。那么&#xff0c;就可以求出上拉电阻R的阻值。 上拉…

Lodop指定纸张类型不生效问题

根据官网指定纸张类型的样例 https://www.lodop.net/demolist/PrintSample5.html发现按以下代码各种打印机预览和打印效果均不同LODOPgetLodop();LODOP.PRINT_INIT("");LODOP.SET_PRINT_PAGESIZE(1,800,600,"");//设置纸张为80mm*60mmLODOP.ADD_PRINT_HTM(…

埋点成本治理实战(字节)

0、序言 随着业务的发展&#xff0c;业务上报的埋点数据会越来越多&#xff0c;杂乱的埋点数据不仅会消耗计算和存储成本&#xff0c;造成巨大的成本浪费&#xff0c;也无法有效的应用于业务&#xff0c;给业务带去数据价值&#xff0c;因此埋点数据的治理就很有必要。 一、治…

Redis缓存何以一枝独秀?(2) —— 聊聊Redis的数据过期、数据淘汰以及数据持久化的实现机制

大家好&#xff0c;又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容&#xff0c;将会通过系列专题&#xff0c;讲清楚缓存的方方面面。如果感兴趣&#xff0c;欢迎关注以获取后续更新。 上一篇文章中呢&#xff0c;我们简单的介绍了下Redis的整体情…

Spring Security 表单配置(二)

Spring Security 表单配置&#xff08;二&#xff09;架构认证过滤器认证成功认证失败架构 Spring Security的整体架构&#xff0c;官网文档有介绍&#xff1a;https://docs.spring.io/spring-security/reference/5.7/servlet/architecture.html 友情提示&#xff1a;可以使用…

极客时间学习笔记:03芯片分类

芯片与集成电路的区别&#xff1f; 芯片肯定不全是集成电路。芯片里面&#xff0c;大约只有 80% 属于集成电路&#xff0c;其余的都是光电器件、传感器和分立器件&#xff0c;行业内把这些器件称为 O-S-D&#xff08;Optoelectronic, Sensor, Discrete&#xff09;。 下面这张…

SpringBoot 2.7.7入门案例

SpringBoot技术 文章目录SpringBoot技术SpringBoot介绍SpringBoot入门总结SpringBoot介绍 SpringBoot是为了简化搭建Spring项目过程而和开发的框架&#xff0c;Spring本身也是简化开发的框架技术。 可以想想SpringMVC项目&#xff08;整合SSM&#xff09;的开发过程&#xff…

【国信长天蓝桥杯】CT117E-M4 嵌入式开发板准备篇 ①开发环境搭建,Keil及STM32CubeMX的下载安装

摘要 本文章基于国信长天 CT117E-M4 嵌入式开发板&#xff0c;讲解了竞赛开发环境的搭建&#xff0c;Keil及STM32CubeMX软件的安装方法&#xff0c;祝各位同学蓝桥杯电子比赛取得好成绩! 软件下载 在蓝桥杯的嵌入式比赛中&#xff0c;主要用到两个软件&#xff0c;分别是代…

易烊千玺小网站短信验证码(小行星编号)发送和验证的实现

每次进入小网站都能看到小小的变化&#xff0c;反观易程序员背后维护的艰辛哈哈哈哈哈哈从此就多了一个目标&#xff1a;one day做出和易烊千玺一样牛的小网站这里面多多的知识点都是我目前都没有学会的&#xff08;明明都实训了。。页面设计 各种小图标动态效果 网站域名申请 …

【人工智能】观看人工智能 (AI) 入门课程,一起来看看都讲了什么

作者&#xff1a;小5聊 简介&#xff1a;一只喜欢全栈方向的程序员&#xff0c;欢迎咨询&#xff0c;尽绵薄之力答疑解惑 公众号&#xff1a;有趣小馆&#xff0c;一个有趣的关键词回复互动功能 1、课程介绍 1&#xff09;讨论什么是 AI 及其重要性 2&#xff09;简要介绍机器学…

MEmu Android Emulator

MEmu Android Emulator是一款专门用于游戏的软件模拟器。你可以从很多方面享受使用MEmu类软件的乐趣&#xff0c;让某人可以直接在计算机上安装它们。您不需要配置复杂的设置&#xff0c;只需安装它们即可。 您可以通过单击右侧的APK按钮轻松安装Andrew游戏。你想安装的APK游戏…