程序示例精选

Python爱心源码动图

如需安装运行环境或远程调试,见文章底部微信名片!

前言

Python写的追女生神器-爱心动图,代码整洁,规则,易读,对学习与使用Python有较好的帮助。


文章目录

        一、所需工具软件

        二、使用步骤

                1. 引入库

                2. 参数设置

                3. 爱心函数

                4. 运行结果

         三、在线协助


一、所需工具软件

          1. Python3.6以上

          2. Pycharm代码编辑器

          3. Random, Math, Thinter库

二、使用步骤

1.引入库

代码如下(示例):

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

2.参数设置

代码如下(示例):

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 = "#FF0000" #爱心颜色,16进制颜色代码

该处使用的url网络请求的数据。

3.爱心函数:

代码如下(示例):

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 += CANVAS_CENTER_Xy += CANVAS_CENTER_Yreturn 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 - dydef 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 - dydef 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.build(2000)self.random_halo = 1000self.generate_frame = generate_framefor frame in range(generate_frame):self.calc(frame)@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 - 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)
if __name__ == '__main__':root = Tk() # 一个Tkcanvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)canvas.pack()heart = Heart() # 心draw(root, canvas, heart) # 开始画画~root.mainloop()

4.运行结果如下:

三、在线协助: 

如需安装运行环境或远程调试,见文章底部微信名片!

Python爱心源码抖动图相关推荐

  1. 爱心源码动图-Html网页运行

    程序示例精选 爱心源码动图-Html网页运行 如需安装运行环境或远程调试,见文章底部微信名片! 前言 Html写的追女生神器-爱心动图,代码整洁,规则,易读,对学习与使用Html有较好的帮助. 文章目 ...

  2. 闪动爱心源码(Python)

    闪动爱心源码 效果: import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH = 640 ...

  3. vue3版本的爱心源码

    老婆:你会爱心源码吗? 我:(一脸懵逼)啥? 老婆:就是用代码花个爱心,小垃圾 我:这不是本科生基操吗?能难得住我?说吧,要什么样的.什么色儿的爱心. 脑海里,已经开始构思用纯css画还是用svg,要 ...

  4. Python绘制表白爱心源码【女神看了绝对不会拒绝的你的表白嘿嘿】

    一个人在沙漠里快要饿死了,这时他捡到了神灯. 神灯:"我只可以实现你一个愿望,快说吧,我赶时间." 人:"我要老婆--" 神灯立刻变出一个美女,然后不屑的说:& ...

  5. Python使用matplotlib可视化箱图、seaborn中的boxplot函数可视化分组箱图、在箱图中添加抖动数据点(Dot + Box Plot)

    Python使用matplotlib可视化箱图.seaborn中的boxplot函数可视化分组箱图.在箱图中添加抖动数据点(Dot + Box Plot) 目录

  6. 专属微信二维码python制作_如何利用Python制作简单的公众号二维码关注图

    创意配图:微信,微信公众号,微信大V 而且最近发现了一个新的图像处理方面的库-Wand,它是 ImageMagick 库的 Python 接口.于是,我就打算用这个库来实现简单的制作一个二维码关注图, ...

  7. python二维码加动态图_用python自制个性二维码(设置带LOGO的二维码带动图)

    本文使用的是 python3.6 MyQR库 tkinter库 我们可以使用MyQR这个库 安装方式如下: 进入命令行输入: pip3 install MyQR 如果安装不成功多半是网络有问题,可以去 ...

  8. 中文汉字注音,汉字转拼音,支持图片识别文字,支持结果转图下载,附上小程序核心源码

    "文字注音"小程序在微信.字节跳动.支付宝.QQ等小程序平台同步上线,微信.头条.抖音.支付宝.QQ中搜索"文字注音"即可获得. 一.功能 汉字转拼音,支持图片 ...

  9. python爬取图片源码_半次元图片爬取-python爬取半次元图片源码下载-西西软件下载...

    python爬取半次元图片源码,由大神自制的python爬取工具,本源码针对半次元图片平台,可以爬取最新的网站图片资源,支持自定义保存目录,非常方便,需要requests库的支持,想要相关源码资源的朋 ...

最新文章

  1. SpringBoot基础入门
  2. centos国内yum源
  3. python面向对象(3)
  4. mysql root用户创建数据库,分配到一个帐户下
  5. java 判断类型_Java中类型判断的几种方式
  6. Kotlin:比 Java 做得更好
  7. todo: 网口驱动
  8. mtkwin10驱动_MTK手机刷机驱动下载|MTK通用USB刷机驱动 Win7/Win10 自动安装版 下载_当下软件园_软件下载...
  9. 深海迷航坐标传送代码_深海迷航全控制台代码一览
  10. Excel常用函数:汇总计算与统计
  11. 收藏 | 史上最详细的 Landsat 1-9 系列数据集介绍~
  12. 论文阅读:Region Proposal by Guided Anchoring
  13. 《STM32学习笔记》4——核心功能电路与编程(下)
  14. IDM UltraEdit编辑器V26.00.0.48 烈火汉化64位版
  15. 算法系列——弗洛伊德算法(Floyd)
  16. led亮度鉴别测试软件,测试LED颜色与亮度——FeasaLED测试仪
  17. diskgenius系统迁移_手把手教你如何优化windows7操作系统
  18. 中国历代首都一览(完全版)
  19. 六种常见的「用户行为」分析方法
  20. 物联网介绍及RFID

热门文章

  1. 华为手机用显示服务器超时,手机服务器超时
  2. 回文树 PAM 学习笔记
  3. Monolog使用教程【入门案例版】
  4. Linux下.sh案例分析
  5. windows server2003 web服务器搭建
  6. 荣耀70和opporeno8哪个值得买 两者配置对比
  7. python实现遮挡显示特效
  8. “全国十佳新锐领军程序员”出炉,小i机器人朱频频等获评
  9. 【Tools】Qt 6.0安装图解教程
  10. JavaWeb项目报400错误