【爱心上面可以加字】Python爱心代码,简单又好看

一、爱心代码展示

代码运行之后就是这样的啦,简直是表白,道歉神器!

二、完整代码

加字的代码在后面,大家替换成自己想要的文字就可以啦!

import random
from math import sin, cos, pi, log
from tkinter import *

CANVAS_WIDTH = 640  # 画布的宽
CANVAS_HEIGHT = 480  # 画布的高
CANVAS_CENTER_X = CANVAS_WIDTH / 2  # 画布中心的X轴坐标
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2  # 画布中心的Y轴坐标
IMAGE_ENLARGE = 11  # 放大比例
HEART_COLOR = "#ff2121"  # 心的颜色,这个是中国红


def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):
    """
    “爱心函数生成器”
    :param shrink_ratio: 放大比例
    :param t: 参数
    :return: 坐标
    """
    # 基础函数
    x = 16 * (sin(t) ** 3)
    y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t))

    # 放大
    x *= shrink_ratio
    y *= shrink_ratio

    # 移到画布中央
    x += CANVAS_CENTER_X
    y += CANVAS_CENTER_Y

    return int(x), int(y)


def scatter_inside(x, y, beta=0.15):
    """
    随机内部扩散
    :param x: 原x
    :param y: 原y
    :param beta: 强度
    :return: 新坐标
    """
    ratio_x = - beta * log(random.random())
    ratio_y = - beta * log(random.random())

    dx = ratio_x * (x - CANVAS_CENTER_X)
    dy = ratio_y * (y - CANVAS_CENTER_Y)

    return x - dx, y - dy


def shrink(x, y, ratio):
    """
    抖动
    :param x: 原x
    :param y: 原y
    :param ratio: 比例
    :return: 新坐标
    """
    force = -1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.6)  # 这个参数...
    dx = ratio * force * (x - CANVAS_CENTER_X)
    dy = ratio * force * (y - CANVAS_CENTER_Y)
    return x - dx, y - dy


def curve(p):
    """
    自定义曲线函数,调整跳动周期
    :param p: 参数
    :return: 正弦
    """
    # 可以尝试换其他的动态函数,达到更有力量的效果(贝塞尔?)
    return 2 * (2 * sin(4 * p)) / (2 * pi)


class Heart:
    """
    爱心类
    """

    def __init__(self, generate_frame=20):
        self._points = set()  # 原始爱心坐标集合
        self._edge_diffusion_points = set()  # 边缘扩散效果点坐标集合
        self._center_diffusion_points = set()  # 中心扩散效果点坐标集合
        self.all_points = {}  # 每帧动态点坐标
        self.build(2000)

        self.random_halo = 1000

        self.generate_frame = generate_frame
        for frame in range(generate_frame):
            self.calc(frame)

    def build(self, number):
        # 爱心
        for _ in range(number):
            t = random.uniform(0, 2 * pi)  # 随机不到的地方造成爱心有缺口
            x, y = heart_function(t)
            self._points.add((x, y))

        # 爱心内扩散
        for _x, _y in list(self._points):
            for _ in range(3):
                x, y = scatter_inside(_x, _y, 0.05)
                self._edge_diffusion_points.add((x, y))

        # 爱心内再次扩散
        point_list = list(self._points)
        for _ in range(4000):
            x, y = random.choice(point_list)
            x, y = scatter_inside(x, y, 0.17)
            self._center_diffusion_points.add((x, y))

    @staticmethod
    def calc_position(x, y, ratio):
        # 调整缩放比例
        force = 1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.520)  # 魔法参数

        dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-1, 1)
        dy = ratio * force * (y - CANVAS_CENTER_Y) + random.randint(-1, 1)

        return x - dx, y - dy

    def calc(self, generate_frame):
        ratio = 10 * curve(generate_frame / 10 * pi)  # 圆滑的周期的缩放比例

        halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
        halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))

        all_points = []

        # 光环
        heart_halo_point = set()  # 光环的点坐标集合
        for _ in range(halo_number):
            t = random.uniform(0, 2 * pi)  # 随机不到的地方造成爱心有缺口
            x, y = heart_function(t, shrink_ratio=11.6)  # 魔法参数
            x, y = shrink(x, y, halo_radius)
            if (x, y) not in heart_halo_point:
                # 处理新的点
                heart_halo_point.add((x, y))
                x += random.randint(-14, 14)
                y += random.randint(-14, 14)
                size = random.choice((1, 2, 2))
                all_points.append((x, y, size))

        # 轮廓
        for x, y in self._points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 3)
            all_points.append((x, y, size))

        # 内容
        for x, y in self._edge_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))

        for x, y in self._center_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))

        self.all_points[generate_frame] = all_points

    def render(self, render_canvas, render_frame):
        for x, y, size in self.all_points[render_frame % self.generate_frame]:
            render_canvas.create_rectangle(x, y, x + size, y + size, width=0, fill=HEART_COLOR)


def draw(main: Tk, render_canvas: Canvas, render_heart: Heart, render_frame=0):
    render_canvas.delete('all')
    render_heart.render(render_canvas, render_frame)
    main.after(160, draw, main, render_canvas, render_heart, render_frame + 1)


if __name__ == '__main__':
    root = Tk()  # 一个Tk
    canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)
    canvas.pack()
    heart = Heart()  # 心
    draw(root, canvas, heart)  # 开始画画~
    Label(root,text="我爱你",bg='black',fg='#FF99CC',font='Helvetic 20 bold').place(

        relx=.5,rely=.5,anchor=CENTER)
    root.mainloop()

三、具体代码含义

 

释怀Henry
关注 关注
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
html爱心特效代码
梦游星海的博客
10-26 44万+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywor...
chatgpt赋能pythonPython怎么敲代码敲出爱心名字
suimodina的博客
06-15 1690
本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。
爱心代码python)_爱心代码编程python复制
隔壁王叔的博客
11-25 8159
爱心代码python)_爱心代码编程python复制
Python跳动的爱心代码(可写字版)!
最新发布
2401_85339817的博客
06-21 967
在`__init__`函数中,首先定义了原始爱心坐标集合(`self._points`)、边缘扩散效果点坐标集合(`self._edge_diffusion_points`)、中心扩散效果点坐标集合(`self._center_diffusion_points`)以及每帧动态点坐标的集合(`self.all_points`)。在另一个函数`calc`中,定义了半径的缩放比例、光晕的半径和数量,并生成了一定量的光晕点并将其加入到`self.all_points`中。(无法解决,只能同意哦~)
简短python代码--实现一个爱心Love
qq_33472146的博客
07-20 7519
代码如下: print(’\n’.join([’’.join([(‘Love’[(x-y) % len(‘Love’)] if ((x0.05)**2+(y0.1)**2-1)**3-(x0.05)*2(y0.1)**3 <= 0else’ ') for x in range(-30, 30)]) for y in range(30, -30, -1)])) 效果如下(没截全): 反正就这...
python编程爱心代码,python 爱心名字代码
2301_81900439的博客
04-01 731
下面进入正题,分享一波专属Python表白代码。玫瑰毫无疑问,玫瑰一直都是是520、521…这类节日的专属python爱心代码加人名。# 花瓣# 文字【----完整源码文末免费领!----】效果:心连心t.width(5)t.fd(100)t.left(90)t.fd(100)t.pu()t.pd()t.fd(100)t.left(90)t.fd(100)t.pu()t.pd()效果:动态爱心效果:爱心biupensize(3)left(150)
表白神器 !可以加字的绚丽爱心代码 !!
xiaolinyui的博客
11-30 1754
最近都快要被动态爱心刷屏了,今天跟大家来不一样的爱心代码,可以在爱心中央写下你想要的字!
python爱心代码中间中间加字
CL_Young的博客
11-16 1万+
python爱心代码中间中间加字以及教程(接上文)
python爱心代码可以加字
05-11
Python爱心代码可以加字,是指在控制台或者命令行中,通过Python代码打印出一个爱心图案,并且可以在爱心图案中加入文字。下面是一份Python爱心代码可以加字的示例: ``` import time def heart(text): for i in ...
python实现爱心代码
weixin_45852958的博客
11-14 9537
理工男李峋的极致浪漫:爱心代码|和你的心跳同频共振
Python爱心程序
11-20
一个简单Python绘图案例。通过Python的turtle库来绘制一个爱心
python爱心,署自己名和时间
全栈川川
01-28 7710
代码如下: #1-1导入turtle模块进行设计 import turtle import time #1-2画心形圆弧 def hart_arc(): for i in range(200): turtle.right(1) turtle.forward(2) def move_pen_position(x, y): turtle.hideturtle() # 隐藏画笔(先) turtle.up() # 提笔 turtle.goto
Python绘制爱心代码,书写爱情故事
FLK_9090的博客
03-10 1741
简介: 在本篇博客中,将为大家介绍3种绘画爱心python代码。通过这个有趣的项目,不仅可以提升编程技能,还能为程序世界增添一份浪漫和温暖。
python爱心代码特效怎么弄,python爱心代码大全
神经网络爱好者
07-20 1266
大家好,小编为大家解答python爱心代码怎么运行的问题。很多人还不知道python爱心代码特效怎么弄,现在让我们一起来看看吧!
Python李峋同款跳动的爱心代码(可写字版)
xxue345678的博客
12-07 3622
一年前小编曾用python编写过跳动的爱心代码,不知道有多少小伙伴们已经学会了呢,最近小编在用c语言和java编写跳动的爱心的时候,发现之前用python编写跳动的爱心时没有添加文字,这不,小编立马翻出之前的代码一顿操作,给大家来了更新后的爱心,快来看看趴~(附详细分析哦)
python动态爱心代码名字,python动态心形代码简单
wenangou的博客
09-25 1562
你可以修改上面代码来绘制一个会动的爱心,例如,你可以改变函数的形式来绘制爱心的形状,然后使用动画 API 来显示动画效果。你可以使用 matplotlib 库来绘制一个会动的爱心
html+css+js爱心代码
热门推荐
jiangcr123的博客
11-06 1万+
最近好像爱心代码很火
写文章

热门文章

  • mysql5.7安装和配置教程(图文讲解超详细) 7373
  • 【爱心上面可以加字】Python爱心代码,简单又好看 1578
  • navicat创建表格,以及与MySQL命令创建表格的比对 1105
  • Navicat建表的插入,替换,更新,删除表记录的使用技巧 725
  • Navicat 创建ER图 303

最新评论

  • mysql5.7安装和配置教程(图文讲解超详细)

    磊哥的小迷妹: 注意 my.ini 文件中的路径要使用 / 来分割,否则初始化数据库时会报错 --initialize specified but the data directory exists and is not writable

  • mysql5.7安装和配置教程(图文讲解超详细)

    努力的小谢~: 谢谢博主,安装成功了

  • navicat创建表格,以及与MySQL命令创建表格的比对

    CSDN-Ada助手: 恭喜你写了第四篇博客!标题很吸引人,我阅读了你的文章,觉得你对于navicat创建表格和MySQL命令创建表格进行了很好的比对。你的解释和对比非常清晰,让读者能够更好地理解两种方法的优缺点。不过,如果可能的话,我希望你可以在下一篇博客中分享一些实际应用案例,展示不同场景下使用这两种方法的效果对比。谦虚地说,我相信你的深入研究和写作能力一定能够给读者带来更多的启发和帮助。期待你的下一次创作! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5

  • sqlalchemy的增删,插入更新

    CSDN-Ada助手: 恭喜作者撰写了第18篇关于sqlalchemy增删、插入和更新的博客!您的持续创作让读者们受益匪浅。希望您在接下来的创作中可以深入探讨sqlalchemy的高级应用,比如性能优化、复杂查询等方面的内容,相信这些内容也会对读者有很大的帮助。期待您的下一篇精彩文章!

  • python程序设计与项目实践教程----书上例子

    CSDN-Ada助手: 恭喜您写了第6篇博客!看到您分享了关于“python程序设计与项目实践教程----书上例子”的内容,我感到非常期待。您的持续创作让我感到非常振奋,同时也让我学到了很多。希望您能继续分享更多关于Python程序设计与项目实践的经验和教程。或许可以考虑分享一些个人项目实践的经验和心得,让我们更能深入了解实际应用。希望您能继续保持创作的热情,期待您的下一篇作品!

最新文章

  • sqlalchemy的增删,插入更新
  • MySQL查询数据
  • 触发器的创建与使用
2023年18篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家广州仿铜玻璃钢雕塑厂家玻璃钢摆件雕塑定制成都川美玻璃钢雕塑商场美陈装饰包含哪些方面北京大型商场创意商业美陈作品石狮商场美陈制作公司鹤岗玻璃钢雕塑制作厂家玻璃钢dp景点美陈雕塑北京超市商场美陈玻璃钢艺术品雕塑摆件玻璃钢花盆和陶盆哪个好河南走廊商场美陈厂家直销商场美陈 厦门三角镇订制玻璃钢花盆厂家商场美陈橱窗道具制作成都河源玻璃钢动物雕塑常州秋季商场美陈商场外围美陈桃花节布置乌鲁木齐商场美陈石家庄动物玻璃钢雕塑厂家石家庄做玻璃钢雕塑的阿里商场美陈南京玻璃钢雕塑商家玻璃钢白鹭雕塑哪里买南阳玻璃钢卡通水果雕塑江门玻璃钢浮雕雕塑湖南玻璃钢雕塑美陈装饰室外玻璃钢花盆花架图片玻璃钢花盆户外用使用寿命南岗玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化