前言

最近有个剧挺火的 就是那个程序员的剧,叫什么温暖你来着

咳咳,剧我没怎么看,但是吧,里面有个爱心代码,最近可是蛮火的,今天就用Python来尝试一下吧

怎么说呢,用这个表白也可以的,万一她也看这个剧呢,万一就成了呢 哈哈

冲啊,兄弟们

okok 话不多说,现在开始代码部分

代码

模块导入

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

源码.点击领取即可

画布的高和宽

有些数值咱自己也是可以调改的哈,这里我设置的高和宽是 480:640

CANVAS_WIDTH = 640  # 画布的宽
CANVAS_HEIGHT = 480  # 画布的高

x,y轴坐标

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_ratioy *= shrink_ratio

移到画布中央

基本操作,我要多发点文字哈哈,不然说我质量不行

    # 移到画布中央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)
python学习交流Q群:770699889 ### 源码领取return x - dx, y - dy

抖动

这一步可关键了,咱做的就是跳动的爱心代码,so这一步重中之重


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

调整缩放比例

基本上都可以自己调改到自己喜欢的样子

@staticmethoddef 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 - dy

圆滑的周期缩放比例

python学习交流Q群:770699889 ### 源码领取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 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)
python学习交流Q群:770699889 ### 源码领取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()

完整代码

源码.点击领取即可

最后

其实咱自己也可以动动脑筋,调整一下画布的大小啥的,然后再加些其他的元素上去

就比如名字,还有什么日期…很多很多

就看你们怎么操作咯

好啦,今天的分享到这里就结束了

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

Python制作爱心跳动代码,这就是程序员的烂漫吗相关推荐

  1. 8行python代码展示程序员从入门到大神(或跑路)的全部状态

    一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...

  2. python浪漫代码-使用Python代码的程序员也浪漫

    原标题:使用Python代码的程序员也浪漫 代码也浪漫:用Python放一场圣诞节烟花秀! 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法 ...

  3. 这段Python代码让程序员赚300W,公司已确认!网友:神操作!

    Python到底还能给人多少惊喜? 笔者最近看到了这两天关于Python最热门的话题,关于<地产大佬潘石屹学Python的原因>,结果被这个回答惊到了: 来源:知乎 https://www ...

  4. 这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!

    Python到底还能给人多少惊喜? 笔者最近看到了这两天关于Python最热门的话题,关于<地产大佬潘石屹学Python的原因>,结果被这个回答惊到了: 来源:知乎 https://www ...

  5. 程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...

    点击上方"Python大本营",选择"置顶公众号" python大本营  IT人的职业提升平台 Python到底还能给人多少惊喜?笔者最近看到了这两天关于Pyt ...

  6. csdn学院的python培训怎么样_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作...

    Python到底还能给人多少惊喜? 笔者最近看到了这两天关于Python最热门的话题,关于<地产大佬潘石屹学Python的原因>,结果被这个回答惊到了: 来源:知乎 https://www ...

  7. 只会写代码的程序员永远无法出色?!

    程序员和常人有着什么样的区别?是否所有的程序员都是天然呆?为何女性程序员的人数要远远少于男性?在本文中,我们将带着种种疑问深入探讨计算机程序员中的文化. 作者 | Jennifer Ouellette ...

  8. 增删改查java代码_程序员:听说你正在为天天写增删改查代码而烦恼

    有相当多的一部分程序员一直都只接触业余应用的功能,天天写业务代码的程序员也被戏称为CURD程序员,CURD就是增(create).改(update).查(read).删(delete)的意思. CUR ...

  9. 除了写代码,程序员还能做哪些副业呢?

    作者 | 沉默王二 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 许多年轻程序员会单纯地认为:"只要做一名正儿八经的程序员,在技术上深耕细作,在工作上兢兢业业,就一定能 ...

最新文章

  1. php 类分开写,程序员面试必备PHP基础面试题 – 第十七天
  2. php中页面平滑回到顶部代码,原生JS实现平滑回到顶部组件_javascript技巧
  3. php中source,PHP中source #N问题的解决方法
  4. 开发人员kpi怎么写_为什么开发人员应该知道怎么写
  5. LeetCode - 16. 3Sum Closest
  6. 从服务器上下载下来的代码,部署到本地时,Url自动带www前缀
  7. python importlib qpython_Python的import机制
  8. 在Ubuntu系统下安装WPS(21.3.2)
  9. 怎么修改android内存,安卓内存修改器怎么用?
  10. 【FPGA教程案例13】基于vivado核的CIC滤波器设计与实现
  11. Excel基础(14)条件格式与公式
  12. 给春节的宴客小吃来点小惊喜---绿茶甜心曲奇
  13. 【视频学习】李立恒 《阿里铁军销售真经》(完结)
  14. 如何检测机器是否支持TPM
  15. 路由器重温——静态路由
  16. 2020 必须收藏的vscode主题【清爽的前端配置 vue】
  17. XML encoding 与 文件编码
  18. 设计模式C++实现(20)——解释器模式
  19. 前端 h5实现自带浏览器支付功能
  20. ppt模板如何制作动态进度条?

热门文章

  1. 元月元日是哪一天_2021年元旦是在哪一天几号 1月1日周五
  2. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片
  3. 三角函数 弧度角度转换
  4. hadoop之mapreduce教程+案例学习(二)
  5. cordova 插件cordova-plugin-crosswalk-webview - Android 集成crosswalk浏览器内核
  6. 微型计算机出现在20世纪,北语网院20秋《计算机基础》作业【标准答案】
  7. oracle 表变化监控,oracle 怎么 监控数据变化
  8. vue3的自定义指令directives
  9. pr中轨道遮罩键的使用
  10. DEV、SIT、UAT、PET、SIM、PRD、PROD缩写介绍