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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

新年愿望写在"雨"中

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知识。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python

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