情人節表白墻
用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()
這個代碼一開始是用來寫代碼雨的,后來被改成了這個表白墻,中途也有遇到一些問題,比如說字體只能顯示英文,當字串為中文時就會出現一些奇怪的框框,后來發現是我的字體問題,然后我就換了中文字體,然后將字體旋轉了一下改成了橫向,還改變了下落的速度改成了隨機的,讓串列中的每一個元素的下落速度都不一樣,字體大小也不一樣,貼了背景改了音樂,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260323.html
標籤:其他
下一篇:洛谷P1664 每日打卡心情好
