【python】制作李峋同款爱心代码,也不是很难嘛~

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

最近,一部名叫《点燃我,温暖你》得电视剧冲进了大家得视野~

其中李峋用代码做出的红色跳动的爱心,一下子跳到朱韵的心坎里,同样也跳到我们的心坎

今天,我们就用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 = "#ff8181"  # 心的颜色(其他颜色随便改)

爱心部分

ef 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_ratioy *= shrink_ratio# 移到画布中央x += CANVAS_CENTER_Xy += CANVAS_CENTER_Yreturn int(x), int(y)

抖动部分

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 = 1000self.generate_frame = generate_framefor 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))@staticmethoddef 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 - dydef 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_pointsdef 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)

开始画画!

推荐往期文章

🎯 博主所有文章素材、解答、源码领取处:点击

对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

python小介绍:

python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

python数据分析前景:

用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资

python基础自测题:

Python 800 道习题 (°ー°〃) 测试你学废了嘛

最后推荐一套Python视频给大家,希望对大家有所帮助:

全套教程!你和大佬只有一步之遥【python教程】

尾语

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

好了,今天的分享就差不多到这里了!

赶紧拿了代码去跟你朋友炫耀吧~这可是同款

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51494.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

太棒了 | 手把手教你用Python做一个 “举牌小人” 生成器!

教你如何使用Selenium库 本文禁止转载,如有违反,严肃处理! 前几天写了一个婴儿级别的爬虫图文教程,大家很喜欢。戳我查看:3000字 “婴儿级” 爬虫图文教学 | 手把手教你用Python爬取 “实习网”! 趁热打铁…

李峋的跳动爱心代码(python)

运行效果 代码: """ author:Athena Geng """ import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 480 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中…

李峋爱心Python代码

李峋爱心Python代码: # codinggbk import random from math import sin, cos, pi, log from tkinter import * CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARGE 11 HEART_COLOR "…

李峋同款爱心python实现

爱心运行结果截图: import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 840 # 画布的宽 CANVAS_HEIGHT 680 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 # 画…

OpenAI CEO创建的Worldcoin正式推出「世界币」:AI 时代的数字通行证?

编辑:秦晋 据外媒Semafor独家报道,知情人士透露,由 OpenAI 首席执行官 Sam Altman 创建的Worldcoin 代币将于今日推出。 在硅谷引发争议的Worldcoin 代币试图解决两个棘手问题:在线身份认证与收入不平等问题。 据知情人士透露&…

华为鸿蒙HarmonyOS 4定档8月;ChatGPT之父的加密货币正式上线;微软必应聊天将推出重新生成答案功能|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

数据分析实战(六):英国电商用户行为分析

案例:英国电商用户行为数据分析 Part 1. 数据获取 1.1 数据集简介 https://archive.ics.uci.edu/ml/datasets/onlineretail# 该数据集为英国在线零售商在2010年12月1日至2011年12月9日间发生的所有网络交易订单信息。 1.2 数据集内容 数据集为xlsx格式&#xff0c…

亚马逊跟卖分析与经验分享

亚马逊设置跟卖机制,也是给了卖家一个机会,对于新手来说自己制作产品的listing花费大量的时间与精力大多数出单效果很不理想,这个时候把握得当跟卖就会取得很大的优势。 首先它能快速的获得流量 亚马逊的跟卖就是产品的listing共享&#xff…

Lazada和Shopee选品分析之马来西亚电商市场详解-海鲸跨境

马来西亚基础信息: 马来西亚是东南亚第三大经济体,国民富足;并且年轻人众多,对中国的产品非常喜爱。 国民经济:2019你那GDP 3543亿美元,增长4.7% 人均收入:10460美元,仅次于新加坡 年龄结构:30岁以下年轻人占人口53% 电商市场规模与潜力: 马来西亚电商用户数量…

为Lazada商家量身定做的精细化运营数据分析软件,Ushop BI

跨境电商数据可视化BI系统现在在市面上也是比较普遍,但是针对Lazada平台的目前只有一个Ushop BI系统,Ushop BI系统能够把Lazada平台数据可视化做的非常好,其功能覆盖面广,操作简单,是Lazada商家不可多得的好帮手&#…

亚马逊商品销售数据爬虫分析报告

家电产业和消费者升级悄然地展开。 市场的这种变化使消费者对家用电器的期望不再仅仅是一个简单的功能满足,而是更多的细节体验和技术创新。 通过洞察家用电器的消费特点,有利于确定市场的未来趋势,从而积极应对市场变化。 ▼ 我们围绕亚马逊…

Lazada数据大分析:帮你正确解析Lazada市场!

Lazada数据大分析:帮你正确解析Lazada市场! 2021年是跨境电商飞速发展的一年,各行各业都选择了加入跨境电商这个行业,而如今在互联网的大趋势下国内电商行业的发展已经非常成熟,而跨境电商行业就后来居上,…

解决TimeWait过多的问题

原文链接:https://www.tiejiang.org/27040.html 服务端客户端通信连接示意图 1、 time_wait的作用: TIME_WAIT状态存在的理由: 1)可靠地实现TCP全双工连接的终止 在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭…

Confluence 调整会话超时(session timeout)

文章目录 前言一、概括二、实际场景应用1.更改空闲超时2.更改记住我 cookie 的生命周期3.在用户通过身份验证后的某个时间强制注销用户 总结 前言 在 Confluence 中有两个会话 Cookie: JSESSIONID: 由 Tomcat 使用和管理。 默认情况下,这被视为会话 co…

微信智能机器人助手,基于hook技术,自动聊天机器人

微信智能助手说明文档 资料获取方式,关注公总号RaoRao1994,查看往期精彩-所有文章,即可获取资源下载链接 更多资源获取,请关注公总号RaoRao1994 简介 微信智能助手是一款基于PC微信研发的微信助手类软件,能帮助大家…

如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

引言 不同种类的货物对运输的要求不同,钢铁、煤炭、矿石等大宗物资通常对运输要求较低,而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性,时效性,往往希望能尽可能安全和快速送达这类货物,使之尽快进…

2022卡塔尔世界杯赛程直播北京时间_足球世界杯对阵表图完整全部

2022卡塔尔世界杯赛程直播北京时间 足球世界杯对阵表图完整全部 2022卡塔尔世界杯今晚就要开幕了,21日0点卡塔尔世界杯揭幕战卡塔尔队VS厄瓜多尔队就要开打了。下面小编分享2022卡塔尔世界杯完整赛程时间对阵图表,有需要的朋友们可以收藏,到…

2022卡塔尔世界杯。CSDN世界杯勋章来啦

卡塔尔世界杯正在如火如茶的举办着,在比赛场上,我看到了来自世界各地的球队,他们都充满活力,充满激情,每一支球队都在努力的拼搏,无论是为了胜利,还是为了荣誉。我看到了一支支优秀的球队&#…

TCGA下载基因表达矩阵、可视化分析

方法1: https://portal.gdc.cancer.gov/https://portal.gdc.cancer.gov/ 选择RNA-Seq 找TSV格式open的文件加入购物车 进入到购物车点download --cart 打开下载后的tsv格式文件 方法2: (9条消息) 基于TCGA数据库的差异基因分析实现_学习的派大星的博客…

矩阵分析Whut

第一章 第二章 第三章 DDDCB ABBAC BCAB 第四章 ABDCB BABA 第五章 ABDAA 第六章 BC ABCD BC BD ABC