【Python】【完整代码】抖音同款满屏飘字表白代码

1. 开发需求

               要求用Python实现满屏飘字表白,且文字可变动。

1.1 代码实现

#!/usr/bin/env python3
# _*_ coding : UTF-8 _*_
# 开发人员 :jly
# 开发时间 :2024/02/04 19:05:29
# 文件名称 :love.py
# 开发工具 :Visual Studio Code

import turtle as tu
import random as ra
import tkinter as tk
import math


tu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)    #设置画布大小
tu.bgcolor('black')  #设置画布颜色
tu.title("❤")
t = tu.Pen()
t.ht()               #隐藏画笔
words = ["我爱你",
        "I Love You!",
        "永远爱你",
        "你是我年少的欢喜",
        "一生一世一双人",
        "余生我陪你走",
        "陪你到来生",
        "春风十里不如你",
        "三生有幸来日方长",
        "夜很长幸有你",
        "爱你的全部",
        "踏过八荒四海只为你",
        "愿得一人心",
        "众里寻他千百度",
        "顶峰相见",
        "等你下课",
        "往后余生",
        "Missing You!",
        "做我女朋友好么",
        "你已经在我的未来里了",
        "陪你到世界之巅",
        "白头偕老",
        "我喜欢你",
        "好想好想你",
        "想你想你想你",
        "今夜月色真美",
        "代表星星守护你",
        "你是我的唯一"
        ]
    
class Love():    #文案类
    def __init__(self):
        self.x = ra.randint(-1000,1000)   #文案的横坐标
        self.y = ra.randint(-500,500)     #文案的纵坐标
        self.f = ra.uniform(-3,3)   #文案左右移动
        self.speed = ra.uniform(2,5)     #文案移动速度
        self.word = ra.choice(words)  # 文案
        self.color = "#%02x%02x%02x" % (ra.randint(0,255),ra.randint(0,255),ra.randint(0,255))   #文案的颜色
    def draw(self):                #写每个文案
        t.penup()                  #提笔
        t.goto(self.x,self.y)      #随机位置
        t.pendown()                #落笔
        t.color(self.color)        #文案颜色
        t.write(self.word, font=("Comic Sans MS", 24, "bold"))
    def move(self):                    #文案移动函数
        if self.y <= 500:            #当文案还在画布中时
            self.y += self.speed     #设置上下移动速度
            self.x -= self.speed * math.sin(self.f)    #设置左右移动速度
        else:                        #当文案漂出了画布时,重新生成一个文案
            self.x = ra.randint(-1000,1000)
            self.y = -500
            self.f = ra.uniform(-3.14, 3.14)  # 文案左右移动呈正弦函数
            self.speed = ra.uniform(2, 5)  # 文案移动速度
            self.word = ra.choice(words)  # 文案
            self.color = "#%02x%02x%02x" % (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))  # 文案的颜色

class Ball():    #彩球类
    def __init__(self):
        self.r = ra.uniform(2,5)       #彩球的半径
        self.x = ra.randint(-1000,1000)   #彩球的横坐标
        self.y = ra.randint(-500,500)     #彩球的纵坐标
        self.speed = ra.uniform(2,10)     #彩球移动速度
        self.color = "#%02x%02x%02x" % (ra.randint(0,255),ra.randint(0,255),ra.randint(0,255))    #彩球的颜色
        self.outline = 10                #彩球的大小
    def draw(self):                #画每个彩球
        x=self.r                   #彩球的半径
        t.pensize(self.outline)    #彩球的大小
        t.penup()                  #提笔
        t.goto(self.x,self.y)      #随机位置
        t.pendown()                #落笔
        t.color(self.color)        #彩球颜色
        t.begin_fill()
        t.fillcolor(self.color)
        t.circle(x)

    def move(self):                    #彩球移动函数
        if self.y >= -500:            #当彩球还在画布中时
            self.y -= self.speed     #设置上下移动速度
        else:                        #当彩球漂出了画布时,重新生成一个彩球
            self.r = ra.uniform(2,3)
            self.x = ra.randint(-1000,1000)
            self.y = 500
            self.speed = ra.uniform(2,10)
            self.color = "#%02x%02x%02x" % (ra.randint(0,255),ra.randint(0,255),ra.randint(0,255))
            self.outline = 10

def Main():
    Loves = []            #用列表保存所有文案
    for i in range(595):
        Loves.append(Love())
        Loves.append(Ball())
        Loves.append(Ball())
    while True:           #开始绘制
        tu.tracer(0)
        t.clear()
        for i in range(199):    #66个漂浮的文案
            Loves[i].move()
            Loves[i].draw()
            tu.update()
        tu.mainloop()


# 主函数
if __name__ == '__main__':
    Main()



1.2 运行结果

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 03:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 03:28:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 03:28:01       82 阅读
  4. Python语言-面向对象

    2024-02-07 03:28:01       91 阅读

热门阅读

  1. Python学习之路-Tornado基础:数据库

    2024-02-07 03:28:01       49 阅读
  2. 深入理解STM32 HAL库:简化嵌入式系统开发

    2024-02-07 03:28:01       50 阅读
  3. ubuntu20安装mysql8

    2024-02-07 03:28:01       46 阅读
  4. 01. k210-命令行环境搭建(ubuntu环境)

    2024-02-07 03:28:01       52 阅读
  5. 【leetcode100-086到090】【动态规划】一维五题合集2

    2024-02-07 03:28:01       55 阅读
  6. 顺序表应用4:元素位置互换之逆置算法

    2024-02-07 03:28:01       55 阅读
  7. Python无人自动驾驶无人信号灯

    2024-02-07 03:28:01       62 阅读
  8. SpringBoot集成自定义线程池

    2024-02-07 03:28:01       55 阅读
  9. 动态更改 Spring 定时任务 Cron 表达式的优雅方案

    2024-02-07 03:28:01       57 阅读
  10. 安装 kvm Qemu rocky8 linux

    2024-02-07 03:28:01       56 阅读
  11. 能够在线预览的组件库(支持vue2/3)

    2024-02-07 03:28:01       58 阅读