Python爱心代码

效果图:

源代码:

# Beating Heart
# default input
import random
from math import sin, cos, pi, log
from tkinter import *
 
CANVAS_WIDTH = 980  # frame_width    
CANVAS_HEIGHT = 720  # frame_height
CANVAS_CENTER_X = CANVAS_WIDTH / 2  # frame_center_x
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2  # center_y
IMAGE_ENLARGE = 11  # ratio
# color list
HEART_COLOR_LIST = ["#d974ff", "#be77fa", "#a478f3", "#8b78ea", "#7377e0",
                    "#4871c6", "#5c74d3", "#fa6ea9", "#dc6db1", "#ec2c2c",
                    "#e91e41", "#8b4593", "#2bd3ec", "#00be93", "#2bec62"]
 
 
def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):
    """
    create a heart
    :param shrink_ratio: ratio
    :param t: parameter
    :return: x, y
    """
    # basic function, size
    x = 16 * (sin(t) ** 3)
    y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t))
 
    # zoom
    x *= shrink_ratio
    y *= shrink_ratio
 
    # center
    x += CANVAS_CENTER_X
    y += CANVAS_CENTER_Y
 
    return int(x), int(y)
 
 
def scatter_inside(x, y, beta=1.15):
    """
    random inner spreading
    :param x: orig x
    :param y: orig y
    :param beta: strength
    :return: new x, y
    """
    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):
    """
    shrink
    :param x: orig x
    :param y: orig y
    :param ratio: ratio
    :return: new x,y
    """
    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):
    """
    tune beating period
    :param p: parameter
    :return: sin
    """
    # alg
    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):
        # heart
        for _ in range(number):
            t = random.uniform(0, 2 * pi)
            x, y = heart_function(t)
            self._points.add((x, y))
 
        # inner heart 1
        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))
 
        # inner heart 2
        point_list = list(self._points)
        for _ in range(6000):
            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):
        # tune ratio
        force = 1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.520)  # alg
 
        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)  # curve
 
        halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
        halo_number = int(3000 + 6000 * abs(curve(generate_frame / 10 * pi) ** 2))
 
        all_points = []
 
        # ring
        heart_halo_point = set()  # x,y of ring pts
        for _ in range(halo_number):
            t = random.uniform(0, 2 * pi)
            x, y = heart_function(t, shrink_ratio=11.6)  # alg
            x, y = shrink(x, y, halo_radius)
            if (x, y) not in heart_halo_point:
                # new pts
                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))
 
        # appearance
        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))
 
        # content
        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=random.choice(HEART_COLOR_LIST))
 
 
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(70, 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)  # draw
    text1 = Label(root, text="HXX", font=("Helvetica", 18), fg="#c12bec",bg = "black")
    text1.place(x=650, y=500)
 
    text2 = Label(root, text="叉叉宝",font = ("Helvetica", 18), fg = "#c12bec" ,bg = "black") #
    text2.place(x=460, y=350)
 
    root.mainloop()

修改注释:

红色框内text=“”修改效果图中右下角By xxx

蓝色框内text=“”修改效果图中爱心中间的文本内容

黄色橙色框内fg=“”修改效果图中的文字颜色

(这里为颜色的列表,可从中选择并填写至fg内)

绿色淡绿色框内bg=“”修改效果图中文字背景颜色(其实有瑕疵的因为文字是更上一层的图层会有覆盖)

H叉叉
关注 关注
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python代码爱心,来自程序猿的浪漫~
python03011的博客
05-20 1万+
python代码爱心,来自程序猿的浪漫~
最强Python表白代码来了
xiangxue888的博客
06-01 6万+
最强Python表白代码来了
python爱心代码集锦(18款)
kk1kk2kk3kk4的博客
10-26 4960
这篇文章是python 绘制爱心动画的源码集锦合集,每篇都附有原作者的名字博客链接。使用时将代码复制后在相关的编程语言环境下运行。
一篇文章教会你如何用Python制作爱心代码(跳动版)
最新发布
2301_78077589的博客
06-18 1068
Hello大家好,今天来给大家分享一波用Python制作的表白代码——Python爱心代码,接下来会给大家详细讲解,代码实现的详细步骤,以及代码运行所需要的环境。
python爱心代码
joker_man1的博客
11-18 1万+
爱心代码python(html平替)
李峋同款爱心Python代码版来了
热门推荐
分享关于数据的知识。
11-13 15万+
李峋同款爱心Python代码版来了
python爱心代码python爱心代码高级.zip
05-16
python爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python...
python爱心代码高级
05-11
在这里,我们将深入探讨Python爱心代码的高级实现,以及与之相关的软件和插件应用。 1. **字符串艺术与ASCII艺术** 爱心代码通常是通过ASCII字符构建的,这些字符组合在一起形成图形。Python中,可以使用`print()`...
基于python爱心代码
04-10
Python因其简洁易读的语法而被广泛用于教学和初学者入门,因此“基于python爱心代码”可能是为了帮助初学者了解Python的基本用法,同时增加编程的乐趣。接下来,我们将深入探讨Python编程中的爱心代码实现方法、相关...
爱心代码 python
weixin_35754676的博客
02-09 1029
"爱心代码" 应该指的是用编程语言编写的爱心图案。在 Python 中可以使用 print() 函数和特殊字符来绘制爱心图案。例如: print(" ❤️ ") print(" ❤️❤️❤️ ") print(" ❤️❤️❤️❤️❤️ ") print("❤️❤️❤️❤️❤️❤️❤️") print(" ❤️❤️❤️❤️❤️ ") print(" ❤️❤️❤️ ...
爱心代码python)_爱心代码编程python可复制_python爱心代码大全
xiangxueerfei的博客
02-05 2847
鉴于好多小伙伴不太会运行,这边补充一下我的运行方式哈~(针对python),不会的小伙伴直接点击 “运行步骤”即可~运行步骤一、python代码(love.py)else:print('\n to 茂茂酱!!\n\n')运行图:二、python代码(love.py)# 布置画布和设置画笔配置t.setup(width=800, height=500) #窗口(画布)大小t.color('pink', 'pink') #画笔填充颜色t.pensize(3) #画笔粗细。
python绘制爱心曲线
07-23
利用python编写一段代码,对于输入的任何文本,可以分词后输出指定个数的爱心曲线。
python简单的画图代码爱心,python编程爱心代码
2301_81837718的博客
12-20 1644
大家好,小编来为大家解答以下问题,python爱心代码怎么运行,python简单的画图代码爱心,现在让我们一起来看看吧!
python画一个爱心代码,用python爱心代码
阿发狗伪原创
12-19 381
这篇文章主要介绍了用python画一个心形怎么编程,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
python简单的画图代码爱心,怎么用python代码画心
2301_79533350的博客
12-29 979
最新全套【Python入门到进阶资料 & 实战源码 & 安装工具】https://mp.weixin.qq.com/s/9IuSexhanYZ1TMAF1MZIhw。
爱心代码python)_爱心代码编程python可复制
xiangxueerfei的博客
02-21 3749
鉴于好多小伙伴不太会运行,这边补充一下我的运行方式哈~(针对python),不会的小伙伴直接点击 “运行步骤”即可~运行步骤一、python代码(love.py)else:print('\n to 茂茂酱!!\n\n')运行图:二、python代码(love.py)# 布置画布和设置画笔配置t.setup(width=800, height=500) #窗口(画布)大小t.color('pink', 'pink') #画笔填充颜色t.pensize(3) #画笔粗细。
最新 python 爱心代码
2301_79382003的博客
08-14 177
python程序代码:heart.py。
python爱心表白代码简单,python爱心编程代码
2301_81895949的博客
03-21 601
这篇文章主要介绍了python爱心表白代码简单,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。话说明天就是七夕了,买礼物了吗?什么?居然还没买礼物,那这个代码正好送给你,六个Python爱心表白代码,让她高兴一整天!话不多说,咱直接上代码
PYTHON爱心代码
03-15
PYTHON爱心代码是一种用Python编程语言实现的特殊图案,它通常以爱心形状展示。下面是一个简单的PYTHON爱心代码示例: ```python heart = [ " *** *** ", " ***** ***** ", "*************", " *********** ", ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Python爱心代码 2075
  • Navicat建表的插入,替换,更新,删除表记录的使用技巧 785
  • python爬虫数据连接MySQL数据库 636
  • 创建触发器删除、更新 620
  • MySQL数据库1-6课后习题概念题答案 487

最新评论

  • cmd命令提示符建表和navicat建表

    CSDN-Ada助手: 恭喜你写了第四篇博客!看到你分享了关于cmd命令提示符建表和navicat建表的内容,觉得很有收获。不过我觉得下一步你可以考虑写一些实际案例或者问题解决的经验分享,这样能够更好地帮助读者解决实际问题。希望能看到更多你的作品,加油! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5

  • sqlalchemy的增删,插入更新

    CSDN-Ada助手: 恭喜你写了第14篇博客!看到你对sqlalchemy的增删、插入和更新有了深入的了解,真是令人钦佩。希望你能继续保持创作的热情,不断探索更多关于sqlalchemy的知识,或许可以考虑写一些实际应用案例或者与其他数据库操作框架的比较分析,这样可以为读者提供更全面的学习参考。期待你的下一篇作品!

  • 常用正则表达式

    CSDN-Ada助手: 恭喜作者发布了第15篇博客!正则表达式是一个很实用的工具,对于很多人来说是一个难点,但你的博客写得很清晰易懂,让我受益匪浅。希望你能继续分享更多关于正则表达式的知识,或许可以结合实际案例进行讲解,这样读者更容易理解和接受。期待你的下一篇作品!

  • 异常处理案例

    CSDN-Ada助手: 恭喜您写了第16篇博客!看到您分享的异常处理案例,我觉得受益匪浅。希望您能继续保持创作的热情,不断分享更多有深度的技术案例和经验总结。或许下一步可以尝试结合实际项目经验,分享一些解决问题的实际应用案例,这样会更加生动和有趣。期待您的下一篇博客,谢谢您的分享!

  • python爬虫数据连接MySQL数据库

    CSDN-Ada助手: 恭喜你写了这么有深度的一篇博客!学习了你的Python爬虫数据连接MySQL数据库的方法,受益匪浅。希望你能继续分享更多关于Python爬虫和数据库连接的知识,或许可以考虑写一些实际案例或者深入分析某些技术细节,让读者更易于理解和应用。期待你的下一篇作品!

大家在看

  • 基于微信小程序+SpringBoot+Vue的懒人美食帮系统(带1w+文档) 138
  • 基于协程的kv存储 35
  • QT基础概念——对象树和信号槽
  • 蓝易云 - CN2线路的优选:理解CN2网络及其带来的优越性能表现。 485
  • k个有序序列的合并,用小根堆解决

最新文章

  • 异常处理案例
  • 常用正则表达式
  • sqlalchemy的增删,插入更新
2023年16篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司伊犁网站排名优化敦化网站seo优化亳州百度网站优化哪家值得信赖象山网站优化怎样做兴化网站优化公司方案正规关键词排名口碑推荐搜索关键词排名要怎么做关键词搜索排名如何优化搜索引擎关键词怎么排名稳定深圳网站推广优化网络整合推广双湖县网站seo优化排名知乎个人2021年关键词排名海伦网站关键词优化网站优化课程哪里学网站优化师证怎么考塘厦关键词排名砀山网站优化白坭网站优化托管信息关键词排名什么意思天津怎么学关键词排名优化学习html的网站好优化么葫芦岛优化网站关键词如何提高营销网站优化效率商品网站优化效果不好办公家具关键词排名潍城网站优化推广公司酒泉网站优化推广外包公司北京关键词排名优化推荐如何做优化网站排名靠前京东如何查询关键词的排名歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化