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

b站免费版2023最新版本免费网站推广网站短视频

b站免费版2023最新版本,免费网站推广网站短视频,温州专业微网站制作公司,足球比赛直播中国队系列文章 序号直达链接Tkinter1Python李峋同款可写字版跳动的爱心2Python跳动的双爱心3Python蓝色跳动的爱心4Python动漫烟花5Python粒子烟花Turtle1Python满屏飘字2Python蓝色流星雨3Python金色流星雨4Python漂浮爱心5Python爱心光波①6Python爱心光波②7Python满天繁星8Pyth…

跳动的爱心

系列文章

序号直达链接
Tkinter
1Python李峋同款可写字版跳动的爱心
2Python跳动的双爱心
3Python蓝色跳动的爱心
4Python动漫烟花
5Python粒子烟花
Turtle
1Python满屏飘字
2Python蓝色流星雨
3Python金色流星雨
4Python漂浮爱心
5Python爱心光波①
6Python爱心光波②
7Python满天繁星
8Python五彩气球
9Python白色飘雪
10Python七彩花朵
11Python 3D星空
12Python大雪纷飞
13Python一闪一闪亮星星
14Python爱心泡泡
15Python爱心射线
16Python圣诞礼物
17Python礼物圣诞树
18Python浪漫星空
19Python飞舞蝙蝠
20Python万圣礼物
21Python蓝色飘雪
Pygame
1Python跨年烟花
2Python炫酷烟花
3Python黑客帝国字母雨
敬请期待……

写在前面

Python语言实现蓝色跳动的爱心的完整代码。

技术需求

  1. Tkinter库:用于创建图形用户界面(GUI)应用程序。tkinter是Python内置的库,用于构建窗口、画布和交互组件。在这个代码中,Tk类用于创建主窗口,Canvas类用于绘制图形。

  2. 数学函数和坐标计算

    • 爱心形状的计算:通过数学公式绘制爱心的形状。使用了sincos函数来计算爱心的坐标,并根据参数shrink_ratio来缩放图形的大小。
    • 随机扩散和散点效果:使用了对数函数和随机数生成技术(例如random.uniformrandom.choice)来模拟爱心的边缘扩散和中心扩散效果,使得爱心在每帧渲染时看起来更加动态和生动。
    • 力学模拟:通过力学模型计算坐标的变化,以模拟爱心的扩散和收缩效果。
  3. 图形绘制

    • 点的动态变化:每一帧渲染时,通过更新爱心的坐标,创建一种动态效果,使得爱心不断变化,产生扩散和收缩的效果。
    • 创建矩形:在render方法中,使用create_rectangle方法在画布上绘制矩形,表示爱心的每个点。矩形的大小和位置随着每帧的计算不断变化。
  4. 动画效果:通过main.after()方法,每隔160毫秒更新一次帧,从而实现平滑的动画效果。after方法用于定时调用draw函数,不断地渲染新的一帧,达到动画的效果。

  5. 界面布局

    • 屏幕居中:通过winfo_screenwidth()winfo_screenheight()方法获取屏幕的宽度和高度,再计算窗口的起始位置,使得窗口在屏幕中央显示。
    • 文字显示:使用Label组件在画布上显示文字,并且通过place方法将其定位在窗口的中央。

完整代码

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))@staticmethoddef 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 - 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=heartcolor)……

代码分析

这段代码使用了 tkinter 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样,以下是对这段代码的详细分析。

1. 导入所需的库

  • tkinter 用于创建图形用户界面(GUI)。
  • random 用于生成随机数,主要用于控制爱心图案的扩散效果。
  • math 中的 sincospilog 用于数学计算,生成爱心形状和扩散效果。
  • tkinter.constants 包含了 CENTER 等常量,用于控制控件的对齐方式。

2. 全局变量定义

  • widthheight: 定义画布的大小。
  • heartxhearty: 爱心的中心坐标。
  • side: 用于定义爱心形状的缩放比例。
  • heartcolor: 爱心的颜色。
  • word: 要显示的文本内容。

3. Heart 类的定义

Heart 类是主要的核心,用来生成和管理爱心的坐标点,并计算每一帧的动态效果。

  • 在 __init__ 方法中,build() 方法生成初始的爱心形状的坐标点,calc() 方法计算每一帧的动态效果,generate_frame 控制总的帧数。
  • self._points:存储生成的爱心图案的原始点。
  • self._edge_diffusion_points:存储边缘扩散的点。
  • self._center_diffusion_points:存储中心扩散的点。
  • self.all_points:存储每一帧的所有点,用于动态渲染。

4. build() 方法

  • build 方法用于生成一定数量的爱心坐标点。通过随机选择角度 t,使用 heart_function(t) 计算出坐标 (x, y),并将其加入 _points 集合中。

5. scatter_inside() 和 shrink() 方法

  • scatter_inside(x, y):用于生成坐标点的散布效果,模拟点在爱心内部随机扩散的效果。
  • shrink(x, y):用于将坐标点向爱心的中心收缩,模拟爱心的聚焦效果。

6. calc_position() 方法

  • calc_position(x, y, ratio):根据每一帧的动画计算坐标点的位移,使用一个参数 ratio 来控制动画的流畅度。

7. calc() 方法

  • calc() 方法用于生成每一帧的动态坐标,包含了爱心外部的扩散效果、边缘扩散、中心扩散等效果。通过 random.uniform() 随机生成颜色变化和点的位置。

8. render() 方法

  • render() 方法根据当前帧数 render_frame 渲染出每一帧的爱心图案。通过 create_rectangle() 在画布上绘制一个小矩形来表示每个动态点。

9. heart_function() 方法

  • heart_function(t):生成爱心形状的基本坐标,通过参数 t 控制点的分布,并根据 shrink_ratio 来调整爱心的大小。

10. curve() 方法

  • curve(p):生成一个周期性的曲线函数,用于控制动态效果的平滑度。

11. draw() 方法

  • draw():这是一个递归的函数,每隔 160 毫秒调用一次,用来更新动画的每一帧。

12. love() 主函数

  • love():这是程序的入口函数。它初始化了 Tkinter 窗口,设置了窗口的位置和大小,创建了一个画布(Canvas),然后创建了 Heart 对象,并启动了 draw() 函数进行动画渲染。

这段代码使用了 tkinter 创建一个动画效果,绘制了一个动态的爱心图案,并在其上显示“我爱你”字样。代码的核心部分是 Heart 类,它负责生成和计算爱心的形状和每一帧的动态效果。通过随机散布、扩散、收缩等效果,使得爱心看起来富有动态感和生命力。

写在后面

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

http://www.dtcms.com/wzjs/521586.html

相关文章:

  • 如何做网络营销推广5seo课培训
  • 个人网站制作wordpress网络推广外包公司排名
  • 关于做女装的网站品牌网
  • 帝国 cms 网站关键字全球搜官网
  • 哈尔滨发布信息的网站360网站seo手机优化软件
  • 免费制作app生成器网站市场调研报告范文2000
  • DW做的网站加载慢湖北权威的百度推广
  • 工人找工作哪个网站好网络营销策略分析报告
  • 二手书网站的建设规模网站浏览器
  • 网站查询功能代码新闻稿发布平台
  • 做网站推广被骗深圳网络营销推广方案
  • php不用框架怎么做网站网络营销介绍
  • 合肥做网站 卫来网络合肥seo优化
  • 营销型网站建设必须的步骤包括自己怎么搭建网站
  • web前端做网站如何网络推广
  • 国外做的比较的ppt网站有哪些做小程序的公司
  • 做网站编辑好还是新媒体编辑关键词站长工具
  • 响应式网站头部企业模板建站
  • 自己做签名网站seo在线培训机构排名
  • 外国网站上做Task线上营销推广方式都有哪些
  • 还有哪些方法让网站更加利于seo今日头条网站推广
  • 校园网站建设 德育专业的网站优化公司排名
  • wordpress引流优化方法
  • 贵阳做个网站需要多少钱中国优秀网页设计案例
  • 上海专业做网站公司厦门seo怎么做
  • 网站开发 集成包建设网站的十个步骤
  • 贵阳做网站费用深圳推广公司哪家最好
  • 做APP必须要有网站么潍坊网站收录
  • 企业网站建设 信科网络深圳快速seo排名优化
  • 网站开发工程师发展趋势在线网页制作网站