开发者社区> Carl_奕然> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Python3,我把新年祝福写在“雨“中,雨一直下,气氛还算融洽...

简介: 我再也不羡慕 好莱坞电影中黑客电脑的屏幕了。
+关注继续查看

1、引言

小屌丝:鱼哥,2023年了, 你有啥愿望啊?

小鱼:这, 我可以选择不告诉你吗?

小屌丝:可以选择不告诉我,但是,你自己憋着,不难受吗?

小鱼:… 我可以告诉别人吗?

小屌丝:… 还有谁能像我,认真听你的愿望。

小鱼:这2023年刚开始,你这是来给我添堵,故意的??

小屌丝:既然你不想告诉我,那我也不勉强了,毕竟…

小鱼:你说话,说一半,留一半,不憋得难受吗?

小屌丝:习惯了, 反正, 我不难受,难受的就是别人!

小鱼:你可以啊, 长大了, 翅膀硬了。

小屌丝:别这么说, 毕竟, 我还有求于你。

小鱼:我可以拒绝吗?

小屌丝:我可以说拒绝无效吗?

小鱼:…

小屌丝:我在某音看到一个特效,蛮好的, 想让你帮我搞一下。

小鱼:深呼吸…深呼吸… 好吧, 你说吧,啥特效。

代码雨特效 视频

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

image.png

小鱼:嗯,这个,我知道的。雨一直下,气氛不再融洽,在同个屋檐下 你渐渐…

小屌丝:停,停,停,打住。你咋还唱上了。

小鱼:哎唛呀… 入景了。

小屌丝:可别正没用的, 咱们要干正事了。

小鱼:好好好, 那咱,就趁着新年, 许个愿望吧。

小屌丝:你瞅瞅, 这立flag,还得我鱼哥。

image.png

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()


执行效果

新年祝福代码雨


我再上一个截图,让你看的更直观

image.png


3、总结

看到这里, 今天的分享就要结束了。

今天主要介绍的是Pygame库的font、display、event等常用模块。

现在再回顾功能的实现逻辑, 其实也不算太难嘛。

你看, 也就 70多行代码呢。

2023,你肯定行的。

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

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

最后再唠叨一句:

我是小鱼:

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【浪漫情人节】送你Python表白神器,祝天下有情人终成眷属
哈哈哈再过十几天就到了一年一度的情人节啦!如此浪漫的日子,小王决定用Python写一个简单的表白神器送给大家,祝天下有情人终成眷属! 
0 0
最长情的告白就是陪伴【Python七夕祝福】——那些浪漫的开始
最长情的告白就是陪伴【Python七夕祝福】——那些浪漫的开始
0 0
我做的一个超级好玩的中秋节小游戏
我做的一个超级好玩的中秋节小游戏
0 0
快到春节了,用 Python 实现一场烟花秀
春节的脚步越来越近了,每逢春节很多地方都会燃放烟花来增添节日的气氛,然而因环境污染的加剧,近年来不少地方已经禁止燃放烟花了,为了弥补这个遗憾,本文我们来看一下如何使用 Python 来实现一场烟花秀。
0 0
情人节,你刚表白,而我已经开始选哪里买钻戒了~
今天又到了一年好几度的情人节(内心os,为啥咋就这么多呢),当然之前也分享过很多篇100%成功表白的python代码,这里按照故事进展给大家分享一下。
0 0
DayDayUp:2018年06月07日高考必胜:程序猿的方式祝福莘莘学子高考必胜!
DayDayUp:2018年06月07日高考必胜:程序猿的方式祝福莘莘学子高考必胜!
0 0
隔壁女神泡不到?那是你没用到python仿抖音表白神器
很多人在问,python能干嘛? 可以做数据分析,比如可视化爬虫 可以做网站,比如知乎,youtube等等一些就是python写滴 可以做游戏,虽然我不知道有哪些大型游戏,但是还是能做 但是python可以做许多有趣的东西,比如下面的仿抖音表白神器 不妨来看看实现的过程 安装库 导入第三方库 设置.
1741 0
情人节快到了@!没想好送什么礼物吗?python为你打造一款表白神器,瞧好了你
前言马上情人节了,送什么给你女神呢。鲜花?口红?香水?还远远不够!再写一个告白程序,给她一个惊喜!那才刚刚好,保证是最特别的礼物! 我们做所有事情都要有一个思路, 写一个程序也不例外,本文代码分为了4个步骤 引用tkinter工具包 关闭所有窗口 定义不喜欢按钮的提示 窗口不能关 引用t...
1819 0
母亲节的祝福(r12笔记第64天)
  母亲节到了,还是个周末,想必朋友圈都是各种祝福刷屏了,就一点,打个电话吧,和没打的同学想比,这个至少比发朋友圈效果来得实在,至少你亲自告诉她了。    而我们现在也是上有老,下有小,所以今天也应该是孩子妈妈的节日,孩子还太小,说不了,那我们就简单表个态吧,发个红包啥的。
914 0
+关注
Carl_奕然
CSDN博客专家,51CTO博主专家,51认证讲师,资深测试开发专家,金牌面试官,职场面试培训及规划师。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
诚 .xin赢天下
立即下载
诚Xin赢天下
立即下载
魔盯D1智能门禁机
立即下载