表白墙

情人节表白墙

用python代码写的表白墙

最近比较无聊于是我朋友就给我推荐了这个比赛:https://marketing.csdn.net/p/c75ccc7a86b45de0fa8f1559ca8887fc?spm=1000.2115.3001.4368是一个关于情人节的比赛,于是我就想到做一个表白墙。代码如下:

# 导入相关模块
import random
import sys
import pygame
from pygame.locals import *

# 设置相关参数
WIDTH = 640
HEIGHT = 413
SPEED = [3, 50]
STRS = ['*i love python*', '*我本将心照明月*''*奈何明月照沟渠*', '*众里寻他千百度*', '*蓦然回首,那人却在灯火阑珊处*', '*最是人间留不住,朱颜辞镜花辞树*',
        '*两情若是久长时*', '*又岂在朝朝暮暮*', '*山有木兮木有枝*', '*心悦君兮君不知*', '*多情自古伤离别*', '*更哪堪,冷落清秋节*',
        '*花开堪折直须折*', '*莫待无花空折枝*', '*思此星晨非昨夜*', '*为谁风露立中霄*', '*落花有意随流水*', '*流水无心恋落花*']


# 随机生成多个速度
def speed():
    while True:
        speed_random = random.randint(SPEED[0], SPEED[1])
        return speed_random


# 随机生成颜色
def colour():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)


# 随机生成位移
def move():
    return random.randint(0, WIDTH), -20


# 设置字符串
def str():
    for i in range(len(STRS)):
        return STRS[random.randint(0, len(STRS) - 1)]


# 设置随机字体大小
def size():
    return random.randint(20, 40)


# 定义一个会动的图片类
class Code(pygame.sprite.Sprite):
    # 初始化
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.speed = speed()
        self.colour = colour()
        self.move = move()
        self.str = str()
        self.font = pygame.font.Font('C:/Windows/Fonts/STXINWEI.TTF', size())
        self.image = self.font.render(self.str, True, colour())
        self.image = pygame.transform.rotate(self.image, random.randint(360, 360))  # 以垂直方式下落
        # 让字体居中
        self.rect = self.image.get_rect()
        # 使元素真实位置等于位移
        self.rect.topleft = move()

    def update(self):
        self.rect = self.rect.move(0, self.speed)
        # 超出屏幕的宽度就销毁
        if self.rect.top > HEIGHT:
            self.kill()


# 初始化游戏
pygame.init()
# 设置屏幕大小
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# 设置标题
pygame.display.set_caption('表白墙')
# 初始化音乐包
pygame.mixer.init()
# 加载音乐
pygame.mixer.music.load('C:/KuGou/love.mp3')
# 播放音乐
pygame.mixer.music.play()
# 设置帧数率
clock = pygame.time.Clock()
# 创建一个监听事件
codesGroup = pygame.sprite.Group()

while True:
    # 每帧停止24秒
    clock.tick(10)
    for event in pygame.event.get():
        # 监听关闭事件
        if event.type == QUIT:
            pygame.quit()
            sys.exit(0)
    # 获取图片对象
    picture = pygame.image.load('./love you.png')
    # 将图片对象渲染到窗口上
    screen.blit(picture, (0, 0))
    # 将图片展示到屏幕上
    pygame.display.flip()
    # 新建一个精灵
    codeObject = Code()
    codesGroup.add(codeObject)
    # 监控并销毁.
    codesGroup.update()
    codesGroup.draw(screen)
    pygame.display.update()

这个代码一开始是用来写代码雨的,后来被改成了这个表白墙。中途也有遇到一些问题,比如说字体只能显示英文,当字符串为中文时就会出现一些奇怪的框框,后来发现是我的字体问题,然后我就换了中文字体,然后将字体旋转了一下改成了横向,还改变了下落的速度改成了随机的,让列表中的每一个元素的下落速度都不一样,字体大小也不一样,贴了背景改了音乐。

你可能感兴趣的:(python)