当前位置: 首页 > news >正文

网站建设知名公司排名百度app免费下载安装

网站建设知名公司排名,百度app免费下载安装,网站开发应聘信息,wordpress目录页去掉系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…

跳动的爱心

系列文章

序号直达链接
表白系列
1Python制作一个无法拒绝的表白界面
2Python满屏飘字表白代码
3Python无限弹窗满屏表白代码
4Python李峋同款可写字版跳动的爱心
5Python流星雨代码
6Python漂浮爱心代码
7Python爱心光波代码
8Python普通的玫瑰花代码
9Python炫酷的玫瑰花代码
10Python多彩的玫瑰花代码
节日系列
1Python动漫风烟花秀代码
2Python新年烟花秀代码
3Python圣诞礼物代码
4Python画圣诞树代码
5Python可爱版圣诞树丨绿色
6Python可爱版圣诞树丨粉色
7Python大雪纷飞代码
8Python生日蛋糕代码
9Python五彩气球代码
10Python国庆祝福代码
11Python万圣礼物代码
12Python愚人节礼物代码
13Python浪漫星空代码
14Python樱花树代码
动漫系列
1Python名侦探柯南
2Python喜羊羊
3Python懒羊羊
4Python沸羊羊
5Python小灰灰
6Python小香香
7Python灰太狼
8Python海绵宝宝
9Python哆啦A梦
10Python凯蒂猫
11Python猫和老鼠
12Python草莓熊
13Python迷你皮卡丘
14Python高级皮卡丘
15Python豪华皮卡丘
16Python史迪仔
17Python小熊猫
18Python蜘蛛侠
19Python可爱版蜡笔小新
20Python萌萌的蜡笔小新
21Python罗小黑
22Python猪猪侠
炫酷系列
1  Python张万森下雪了
2Python一闪一闪亮晶晶
3Python黑客帝国代码雨
4Python七彩花朵
5Python模拟3D星空
6Python金榜题名
7Python满天星

文章目录

  • 系列文章
  • 写在前面
  • 完整代码
  • 代码分析
      • 1. 导入库
      • 2. 全局变量定义
      • 3. Heart 类
        • 3.1 `__init__` 方法
        • 3.2 `build` 方法
        • 3.3 `calc_position` 方法
        • 3.4 `calc` 方法
        • 3.5 `render` 方法
      • 4. 辅助函数
        • 4.1 `heart_function`
        • 4.2 `scatter_inside`
        • 4.3 `shrink`
        • 4.4 `curve`
      • 5. 主程序和显示
      • 6. 总结
  • 写在最后

写在前面

Python语言实现李峋同款可写字版跳动的爱心的完整代码。

完整代码

import tkinter as tk
import tkinter.messagebox
import random
from math import sin, cos, pi, log
from tkinter.constants import *width = 888
height = 500
heartx = width / 2
hearty = height / 2
side = 11
heartcolor = "skyblue"  # 爱心颜色,可修改
word = "I Love You!"  # 想要写的字,可修改# 爱心类
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))
……

代码分析

这段代码是使用 tkinter 库编写的一个爱心动画程序。它展示了一个动态变化的爱心效果,并在屏幕中间显示 “I Love You!” 文字。代码包含了多个功能模块,下面将逐一分析每个部分的功能和工作原理。

1. 导入库

import tkinter as tk
import tkinter.messagebox
import random
from math import sin, cos, pi, log
from tkinter.constants import *
  • tkinter:用于创建图形用户界面(GUI)。
  • random:用于生成随机数,控制动画中的随机效果。
  • math:用于数学计算,特别是三角函数和对数运算,用于生成爱心形状的数学公式。
  • tkinter.constants:提供一些常用常量,例如用于定位和对齐的常量(如 CENTER)。

2. 全局变量定义

width = 888
height = 500
heartx = width / 2
hearty = height / 2
side = 11
heartcolor = "skyblue"  # 爱心颜色,可修改
word = "I Love You!"  # 想要写的字,可修改
  • widthheight:定义了画布的宽度和高度。
  • heartxhearty:爱心的中心坐标。
  • side:定义了爱心图案的初始大小。
  • heartcolor:定义了爱心的颜色。
  • word:定义了显示在屏幕上的文字内容。

3. Heart 类

Heart 类负责生成和渲染动态的爱心效果。

3.1 __init__ 方法
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)
  • self._pointsself._edge_diffusion_pointsself._center_diffusion_points:分别存储爱心的原始点、边缘扩散效果点和中心扩散效果点。
  • self.all_points:保存每一帧的所有点数据。
  • self.build(2000):构建爱心形状和扩散效果。
  • self.random_halo:用于控制光晕效果的强度。
  • self.generate_frame:决定生成的帧数,用于控制动画的流畅度。
3.2 build 方法
def build(self, number):for _ in range(number):t = random.uniform(0, 2 * pi)x, y = heart_function(t)self._points.add((x, y))
  • self._points:通过生成随机的 t 值,计算出爱心形状的点。heart_function(t) 是计算爱心形状的函数。
  • 扩散效果:通过向 self._edge_diffusion_pointsself._center_diffusion_points 中添加更多的点来实现边缘和中心的扩散效果。
3.3 calc_position 方法
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

这个方法用于计算每个点在动画过程中移动的偏移量。偏移量的计算考虑了距离和比例,并加入了一些随机偏差,使得效果更加自然。

3.4 calc 方法
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))
  • 计算每一帧的变化,更新爱心的点和光晕效果。
  • halo_radiushalo_number 控制了光晕的半径和数量。
  • 使用 heart_functionshrink 方法来计算爱心边缘的点,并将它们加入 all_points 列表。
3.5 render 方法
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)
  • 渲染当前帧的所有点,使用 create_rectangle 方法在画布上绘制矩形来表示每个点。
  • 点的大小由 size 控制,颜色是 heartcolor

4. 辅助函数

4.1 heart_function
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_ratioy *= shrink_ratiox += heartxy += heartyreturn int(x), int(y)
  • 该函数根据 t 参数计算出爱心的坐标,使用的是数学公式生成爱心形状的点。
  • shrink_ratio 控制爱心大小。
4.2 scatter_inside
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 - dy
  • 模拟点的散射效果,控制点在爱心内部的分布。
4.3 shrink
def 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 - dy
  • 通过计算一个缩放因子来调整点的位置,使其从爱心的中心向外扩展或收缩。
4.4 curve
def curve(p):return 2 * (2 * sin(4 * p)) / (2 * pi)
  • 用于生成平滑的周期性变化,控制动画中的点移动。

5. 主程序和显示

def love():root = tk.Tk()screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()x = (screenwidth - width) // 2y = (screenheight - height) // 2 - 66root.geometry("%dx%d+%d+%d" % (width, height, x, y))root.title("❤")canvas = tk.Canvas(root, bg='black', height=height, width=width)canvas.pack()heart = Heart()draw(root, canvas, heart)tk.Label(root, text=word, bg="black", fg="skyblue", font="Helvetic 25 bold").place(relx=.5, rely=.5, anchor=CENTER)root.mainloop()
  • 创建主窗口并设置其尺寸和标题。
  • 创建一个画布并使用 Heart 类生成爱心效果。
  • 使用 draw 函数每隔一定时间刷新一次画布,渲染新的帧。
  • 在窗口中间显示 “I Love You!” 文字。

6. 总结

这段代码通过使用 tkinter 和数学函数,创建了一个动态的爱心动画,展现了光晕效果和扩散效果,使得爱心看起来更加生动和浪漫。通过对动画帧的控制,爱心的形状和运动轨迹会不断变化,生成了一个流畅的动态效果。这不仅是一个简单的 GUI 程序,还融合了数学和物理模拟的概念。

写在最后

我是一只有趣的兔子,感谢你的喜欢!

http://www.yayakq.cn/news/929866/

相关文章:

  • 贵阳住房和城乡建设局网站wordpress评论去掉邮箱
  • 优秀设计网站大全山东一建建设有限公司网站
  • ps做的网站图片好大响应式网站建设网站
  • 网站建设公司问答营销案例建设部科技中心网站
  • 电商官方网站怎样注册网站免费的
  • 做英文网站哪个网站比较好网络公司经营范围参考
  • 网站后台购买帝国cms个人网站模板
  • 手机网站知识网站内外链接怎么做
  • 如何选择南京网站建设网页设计图片间距代码
  • 如何做好网站针对搜索引擎的seo长沙哪些公司做网站
  • wordpress改关键词百度关键词seo推广
  • 社群网站建设强强seo博客
  • 网网站建设有什么网站可以做毕业影像
  • 专业模板建站软件网站如何在百度刷排名
  • 做文案图片上什么网站金融网站建设公司
  • 东至网站制作大学生网站建设结题报告
  • 车辆对比那个网站做的好网站的主题是什么
  • 超炫网站页面新公司注册详细流程
  • 林河西网站建设网站后台登录密码修改
  • 怎样只做自己的网站头部互联网公司有哪些
  • 商务网站建设规划比较流行的网站建设技术有哪些
  • wordpress管局备案网站seo怎样做
  • 自己本地可以做网站服务器吗天翼电子商务有限公司
  • 企业网站托管服务公司wordpress用户修改邮箱
  • 找快照网站查询昆明网络营销咨询
  • 做民宿加盟哪些网站比较好简述网站设计的原则
  • 西安哪里做网站解决问题的网站
  • 好网站开发公司德阳建设机械网站
  • c 网站开发需要什么简述网站建设的方案
  • 哪个网站开发培训好公司网站域名及空间