0
点赞
收藏
分享

微信扫一扫

Python制作代码雨

乐百川 2022-01-16 阅读 122

我一个朋友在某音看到了这玩意儿,说有点东西,还问我那个厉不厉害,我只能说内行看笑话。它非得让我也搞一个。

反正也无聊就简单写了一个

简单设计:

1.黑色背景,绿色字体,内容为随机符号-----pygame和random

2.下落,显示,刷新

直接上代码:
 

'''
python 3.9
pycharm.pro.2021.3
'''

import random
import pygame

# 初始化参数设计
win_width = 1000
win_height = 800
font_px = 15

# 创建窗口及文本设计
pygame.init()
winsur = pygame.display.set_mode((win_width, win_height))
font = pygame.font.SysFont('', 23)
bg_suface = pygame.Surface((win_width, win_height), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))
winsur.fill((0, 0, 0))
# 文本内容
letter = '1234567890!@#$%^&*qwertyuiopasdfghjklzxcvbnm'
texts = [font.render(letter[i], True, (0, 255, 0)) for i in range(44)]

# 显示设计
column = int(win_width / font_px)
drops = [0 for i in range(column)]
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[32]:
                exit()
    # 延时30
    pygame.time.delay(30)

    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 > win_height or random.random() > 0.95:
            drops[i] = 0
    #
    pygame.display.flip()

效果图:

 代码中使用了一些pygame里面的模块,大家可以自学( http://www.pygame.org )

这里给大家列出来了pygame里的一些模块以及一些方法

pygame.cdrom	    访问光驱
pygame.cursors	    加载光标
pygame.display	    访问显示设备
pygame.draw	        绘制形状、线和点
pygame.event	    管理事件
pygame.font	        使用字体
pygame.image	    加载和存储图片
pygame.joystick	    使用游戏手柄或者 类似的东西
pygame.key	        读取键盘按键
pygame.mixer	    声音
pygame.mouse	    鼠标
pygame.movie	    播放视频
pygame.music	    播放音频
pygame.overlay	    访问高级视频叠加
pygame.rect	        管理矩形区域
pygame.sndarray	    操作声音数据
pygame.sprite	    操作移动图像
pygame.surface	    管理图像和屏幕
pygame.surfarray	管理点阵图像数据
pygame.time	        管理时间和帧信息
pygame.transform	缩放和移动图像

绘制图形

Pygame的坐标原点(0,0)点位于左上角,X轴自左向右,Y轴自上向下,单位为像素。

这里介绍一下常用的方法:

pygame.draw.line(Surface, color, start_pos, end_pos, width)此方法用于绘制一条线段

pygame.draw.aaline(Surface, color, start_pos, end_pos, blend)此方法用于绘制一条抗锯齿的线

pygame.draw.lines(Surface, color, closed, pointlist, width)此方法用于绘制一条折线

pygame.draw.rect(Surface, color, Rect)此方法用于绘制一个矩形

pygame.draw.rect(Surface, color, Rect, width)此方法用于绘制一个矩形框

pygame.draw.ellipse(Surface, color, Rect)此方法用于绘制一个椭圆

pygame.draw.ellipse(Surface, color, Rect, width)此方法用于绘制一个椭圆框

pygame.draw.polygon(Surface, color, pointlist, width)此方法用于绘制一个多边形

pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width)此方法用于绘制一条弧线

pygame.draw.circle(Surface, color, Rect, radius)此方法用于绘制一个圆

Pygame实现动画主要用到的方法:

pygame.image.load(filename)加载一张图片

pygame.Surface.blit(source, dest, area=None, special_flags = 0)将图片绘制到屏幕相应坐标上(后面两个参数默认,可以不传)

pygame.time.Clock()获得pygame的时钟

pygame.time.Clock.tick(FPS)设置pygame时钟的间隔时间

绘制文字

如果你想绘制文字到屏幕上,Pygame提供了很方便的方法使用.ttf字体文件,这样我们就能很轻易的将文字绘制在屏幕上了。

这里我使用了ARBERKLEY.ttf作为字体,字体文件的获取请参考1.5代码获取。

主要用到的方法:

pygame.font.Font(filename, size)

filename:字体文件的文件名;

size:字体的高height,单位为像素;

pygame.font.Font.render(text, antialias, color, background=None)

text:要显示的文字;

antialias: 是否抗锯齿;

color:字体颜色;

background:背景颜色(可选参数);

.get_rect()

获得一个对象的rect,以便于设置其坐标位置

播放音频

在Pygame里播放音频有两个方法,一个用来播放特效声音,一个用来播放背景音乐:

pygame.mixer.Sound(filename)

该方法返回一个Sound对象,调用它的.play( )方法,即可播放较短的音频文件(比如玩家受到伤害、收集到金币等);

pygame.mixer.music.load(filename)

该方法用来加载背景音乐,之后调用pygame.mixer.music.play( )方法就可以播放背景音乐(Pygame只允许加载一个背景音乐在同一个时刻)

 事件

Pygame里常用的事件如下表:

事件产生途径参数
QUIT用户按下关闭按钮none
ACTIVEEVENTPygame被激活或者隐藏gain, state
KEYDOWN键盘被按下unicode, key, mod
KEYUP键盘被放开key, mod
MOUSEMOTION鼠标移动pos, rel, buttons
MOUSEBUTTONDOWN鼠标按下pos, button
MOUSEBUTTONUP鼠标放开pos, button
VIDEORESIZEPygame窗口缩放size, w, h

更多的可以参考官方文档:http://www.pygame.org/docs/icon-default.png?t=LBL2http://www.pygame.org/docs/

举报

相关推荐

0 条评论