用Python生成黑客帝国代码雨
一、random模块
import random
import string
random中常见的函数如下:
1、 随机整数:
print( random.randint(1,50))
2、 随机选取0到100间的偶数:
print( random.randrange(0, 101, 2))
3、 随机浮点数:
print (random.random())
print( random.uniform(1, 10))
4、随机字符:
print (random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()'))
5、 多个字符中生成指定数量的随机字符:
print( random.sample('zyxwvutsrqponmlkjihgfedcba',5))
6、 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print( ran_str)
7、多个字符中选取指定数量的字符组成新字符串:
print (''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5)))
8、 随机选取字符串:
print (random.choice(['剪刀', '石头', '布']))
9、 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print (random.shuffle(items))
二、程序
import random
import pygame
size = width, height = 500, 400
FONT_PX = 15
pygame.init()
# 创建一个窗口
winSur = pygame.display.set_mode(size)
pygame.display.set_caption("黑客帝国代码雨")
font = pygame.font.SysFont("123.ttf", 25)
bg_suface = pygame.Surface(size, flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))
winSur.fill((0, 0, 0))
# 数字版
# texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]
# 字母版
letter = ['1', '2', '3', '4', '5', '6', '8', '7', '9', '0', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c',
'v', 'b', 'n', 'm' ,'o' ,':' ,'/' ,']' ,'[' ,'~' ,'""']
texts = [
font.render(str(letter[i]), True, (0, 255, 0)) for i in range(26)
]
# 按屏幕的宽带计算可以在画板上放几列坐标并生成一个列表
column = int(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:
chang = pygame.key.get_pressed()
if(chang[32]):
exit()
# 将暂停一段给定的毫秒数
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 > height or random.random() > 0.95:
drops[i] = 0
pygame.display.flip()
网友评论