用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" # 心的颜色,芜湖我喜欢的粉色
生成器
python学习交流Q群:770699889 ### 源码领取 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) python学习交流Q群:770699889 ### 源码领取 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)
完整代码
太麻烦了一个个写出来
好了,分享到这里就结束了