赞
踩
我一个朋友在某音看到了这玩意儿。它非得让我也搞一个。
反正也无聊就简单写了一个
简单设计:
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 |
ACTIVEEVENT | Pygame被激活或者隐藏 | gain, state |
KEYDOWN | 键盘被按下 | unicode, key, mod |
KEYUP | 键盘被放开 | key, mod |
MOUSEMOTION | 鼠标移动 | pos, rel, buttons |
MOUSEBUTTONDOWN | 鼠标按下 | pos, button |
MOUSEBUTTONUP | 鼠标放开 | pos, button |
VIDEORESIZE | Pygame窗口缩放 | size, w, h |
更多的可以参考官方文档:http://www.pygame.org/docs/http://www.pygame.org/docs/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。