位置: IT常识 - 正文

Python跳动的爱心(python编程爱心形状)

编辑:rootadmin
Python跳动的爱心

推荐整理分享Python跳动的爱心(python编程爱心形状),希望有所帮助,仅作参考,欢迎阅读内容。

Python跳动的爱心(python编程爱心形状)

文章相关热门搜索词:python爱心函数,python怎么弄个爱心,python动态心形代码简单,python动态心形代码简单,用python画爱心动图,python跳动的爱心代码,用python画爱心动图,python动态心形代码,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

前言 

表白界面 

爱心类 

其他函数 


前言 

跳动的爱心,这又是谁的青春吖,源码在文末公众号自取哈

表白界面 

   

def OK(): #同意按钮 root.destroy() love() #同意后显示漂浮爱心def NO(): #拒绝按钮,拒绝不会退出,必须同意才可以退出哦~ tk.messagebox.showwarning('❤','再给你一次机会!')def closeWindow(): tk.messagebox.showwarning('❤','逃避是没有用的哦')爱心类 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 - heartx) ** 2 + (y - hearty) ** 2) ** 0.520) # 魔法参数 dx = ratio * force * (x - heartx) + random.randint(-1, 1) dy = ratio * force * (y - hearty) + 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=heartcolor)其他函数 def heart_function(t, shrink_ratio: float = side): 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 += heartx y += hearty return int(x), int(y)def scatter_inside(x, y, beta=0.15): ratio_x = - beta * log(random.random()) ratio_y = - beta * log(random.random()) dx = ratio_x * (x - heartx) dy = ratio_y * (y - hearty) return x - dx, y - dydef shrink(x, y, ratio): force = -1 / (((x - heartx) ** 2 + (y - hearty) ** 2) ** 0.6) # 这个参数... dx = ratio * force * (x - heartx) dy = ratio * force * (y - hearty) return x - dx, y - dydef curve(p): return 2 * (2 * sin(4 * p)) / (2 * pi)def draw(main: tk.Tk, render_canvas: tk.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)
本文链接地址:https://www.jiuchutong.com/zhishi/297797.html 转载请保留说明!

上一篇:Vue中实现清空数组和清空el-table(vue清空input file的值)

下一篇:我的第一次edusrc漏洞挖掘 (三连挖)(我的第一次作文400字左右)

  • 手机投屏到戴尔电脑设置方法(手机投屏到戴尔电脑最简单方法)

    手机投屏到戴尔电脑设置方法(手机投屏到戴尔电脑最简单方法)

  • 美图秀秀能去水印吗(美图秀秀去水印不伤原图)

    美图秀秀能去水印吗(美图秀秀去水印不伤原图)

  • 华为手机连接wifi显示不可上网(华为手机连接wifi怎么查看密码)

    华为手机连接wifi显示不可上网(华为手机连接wifi怎么查看密码)

  • oppo保险箱文件不见了(oppo保险箱文件夹路径)

    oppo保险箱文件不见了(oppo保险箱文件夹路径)

  • 华为p30出现一个圆圈怎么取消(华为P30出现一个白点)

    华为p30出现一个圆圈怎么取消(华为P30出现一个白点)

  • 微信怎样发空白消息给好友(微信怎样发空白文字)

    微信怎样发空白消息给好友(微信怎样发空白文字)

  • 华为p30闪光灯怎么开(华为p30pro闪光灯)

    华为p30闪光灯怎么开(华为p30pro闪光灯)

  • 苹果6微信视频对方听不到我说话怎么回事(苹果6微信视频对方听不到声音)

    苹果6微信视频对方听不到我说话怎么回事(苹果6微信视频对方听不到声音)

  • 苹果隔空传送为什么传不了(苹果隔空传送为什么自动拒绝)

    苹果隔空传送为什么传不了(苹果隔空传送为什么自动拒绝)

  • 网易云账号存在异常怎么弄(网易云账号存在异常无法登录)

    网易云账号存在异常怎么弄(网易云账号存在异常无法登录)

  • 微博私信超过三分钟怎么撤回(微博私信超过三天怎么办)

    微博私信超过三分钟怎么撤回(微博私信超过三天怎么办)

  • 台式电脑可以开wifi热点吗(台式电脑可以开腾讯会议吗)

    台式电脑可以开wifi热点吗(台式电脑可以开腾讯会议吗)

  • 佳能开机键在哪(佳能咋开机)

    佳能开机键在哪(佳能咋开机)

  • qq群能看到被谁举报了吗(qq群能看到谁拉入进来的吗)

    qq群能看到被谁举报了吗(qq群能看到谁拉入进来的吗)

  • 苹果为什么闪退(苹果为什么闪退助手卸载不了)

    苹果为什么闪退(苹果为什么闪退助手卸载不了)

  • 红米note8pro怎么连接电脑(红米note8pro怎么开小窗)

    红米note8pro怎么连接电脑(红米note8pro怎么开小窗)

  • 抖音可以看播放记录吗(抖音怎么下载视频到手机)

    抖音可以看播放记录吗(抖音怎么下载视频到手机)

  • 小米手环如何设置nfc(小米手环如何设置时间)

    小米手环如何设置nfc(小米手环如何设置时间)

  • 哪个视图不能编辑文档(下面哪个视图中不可以编辑)

    哪个视图不能编辑文档(下面哪个视图中不可以编辑)

  • 过期的文件如何恢复(过期的文件如何恢复QQ手机)

    过期的文件如何恢复(过期的文件如何恢复QQ手机)

  • 淘宝购物车怎么扩容150(淘宝购物车怎么分组)

    淘宝购物车怎么扩容150(淘宝购物车怎么分组)

  • 逗拍视频怎么上传抖音(在逗拍上面怎么做视频)

    逗拍视频怎么上传抖音(在逗拍上面怎么做视频)

  • etc怎么知道激活了(etc怎么重新激活)

    etc怎么知道激活了(etc怎么重新激活)

  • 苹果为什么系统占了40g(苹果为什么系统数据占这么多的空间)

    苹果为什么系统占了40g(苹果为什么系统数据占这么多的空间)

  • 如何设置小米手机时钟样式(如何设置小米手机铃声)

    如何设置小米手机时钟样式(如何设置小米手机铃声)

  • 朋友在看功能怎么关(朋友在看是怎么显示的)

    朋友在看功能怎么关(朋友在看是怎么显示的)

  • 公司电脑监控都能监控什么(公司电脑监控都看什么)

    公司电脑监控都能监控什么(公司电脑监控都看什么)

  • 提示工程师:如何高效的向ChatGPT提问对话(工程师模式有什么用)

    提示工程师:如何高效的向ChatGPT提问对话(工程师模式有什么用)

  • 广告宣传费扣除比例
  • 制造费用科目一定无余额
  • 有关研发支出的账务怎么做?
  • 无进项开票税点
  • 税务逾期记录怎么消除不了
  • 企业账号变更
  • 电子发票和纸质发票哪个好
  • 发票认证抵扣了还能冲红么
  • 股权转让如何避免缴纳个税
  • 新办企业地税要备案吗
  • 自己公司开发票有什么好处
  • 什么样的凭证是原始凭证
  • 虚假会计凭证有哪些识别方法
  • 银行没有流水怎么开证明
  • 停车场收入如何确认缴税
  • 公司缴纳社保部分从个人扣除 犯法吗
  • 资金流量表国外部门如何记录
  • 小微企业需要到哪里报税
  • 企业注销时未分配利润怎么处理
  • 电信增值税发票怎么抵扣
  • 个人借公司款账务处理
  • 买手机5000预算
  • 抵扣联必须当月认证吗
  • 临时工工资的会计处理和税务处理
  • 购买交易性金融资产时,支付的交易费用应计入
  • 私账转到公账怎么办
  • 赔偿款支出会计处理
  • 做事应该怎么做
  • 产品工人工资会扣税吗
  • 空调拆卸安装怎么找师傅
  • 固定资产汽车抵扣新政策
  • 劳务派遣如何做绩效考核
  • 处置子公司的方式
  • 非流动资产增加说明什么原因
  • 生产成本结转后有余额吗
  • 搜索人工制造
  • php jsonp
  • Linux下socket实现网页抓取 Unicorn 博客频道 CSDN.NET
  • 11个点的是什么星座
  • 帝国cms如何使用
  • python模块的搜索路径
  • 还款利息
  • 增值税专用发票电子版
  • 应交税费企业所得税科目
  • SQL Server 2012 开窗函数
  • 小规模纳税人指的是谁
  • t3怎么查资产负债表
  • 税前减免
  • 股票质押式回购交易是什么意思
  • 预付卡销售和充值怎么做账
  • 广告费支出的税种有哪些
  • 赊销是什么意思 视频
  • mysql数据库主键怎么设置
  • innodb_index_stats导入备份数据时报错表主键冲突的解决方法
  • win10隐藏文件怎么隐藏
  • win7电脑老是跳出弹窗广告怎么办
  • centos6 grub
  • win10连无线网络受限
  • SUSE Linux Enterprise Server 设置防火墙开启ssh远程端口的方法
  • linux使用ssh命令
  • linux网卡添加vlan
  • 自动释放池原理,本质
  • 第一次接触怎么形容
  • vue打包页面空白
  • python各种函数
  • javascript getattribute
  • python怎么发送
  • 安卓手机与电脑连接方法
  • js中遍历数组的方法
  • android刷新activity
  • js从数组中选出最大的三个数
  • 堆实现栈
  • 销售钢材的税率增值税税率是多少
  • 退休个人所得税专项附加扣除减免
  • 非正常户记录
  • 税务登记注销证明是什么样的
  • 甘肃税务局电子发票怎么开
  • 家政公司的清洁工具
  • 广东电子税务局官网登录入口手机版
  • 广东电子税务局官网登录入口手机版
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设