情人节到了,写一份爱心程序(python)

简介: 情人节到了,写一份爱心程序(python)

前言

情人节到了,写一份爱心代码给喜欢的人呀

公式

首先我们介绍下爱心的公式的参数方程:

x = 16 s i n 3 ( t ) x = 16sin^3(t)x=16sin3(t)

y = 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y = 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t)y=13cos(t)5cos(2t)2cos(3t)cos(4t)

根据这个公式,我们可以实现基本的代码

首先使用 n p . l i n s p a c e ( a , b , n u m ) np.linspace(a, b, num)np.linspace(a,b,num) 这个函数生成 a到b区间内的num个数,这些数作为参数t,然后生成对应x,y的值,

t = np.linspace(0, 2 * np.pi, 100)
x = 16 * np.sin(t)**3
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)

然后我们将生成的点平铺在二维坐标上

plt.plot(x, y, color='red')
plt.title('Heart ')
plt.axis('equal')  # 保持坐标轴相等
plt.show()

最终效果

完整代码

import matplotlib.pyplot as plt
import numpy as np
# 生成爱心形状的数据点
t = np.linspace(0, 2 * np.pi, 100)
x = 16 * np.sin(t)**3
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)
# 绘制爱心
plt.plot(x, y, color='red')
plt.title('Heart ')
plt.axis('equal')  # 保持坐标轴相等
plt.show()

进阶

我们使用pygame创建一个界面,在界面上随机生成不同颜色的爱心

初始化pygame:

# 初始化 Pygame
pygame.init()
# 设置窗口大小
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Random Hearts')

编写绘制爱心的函数,根据形参x,y确定位置,color确定颜色

def draw_heart(x, y, color):
    # 生成爱心形状的直角坐标数据点
    t = np.linspace(0, 2 * np.pi, 1000)
    heart_x = x + 16 * np.sin(t)**3
    heart_y = y - (13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t))
    # 绘制爱心形状
    pygame.draw.lines(screen, color, False, list(zip(heart_x, heart_y)), 2)

在主循环中一直生成随机的位置和颜色,绘制pygame界面,然后刷新显示

# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    # 随机生成爱心的位置和颜色
    heart_x = random.randint(0, width)
    heart_y = random.randint(0, height)
    heart_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    # 在随机位置绘制不清空的爱心
    draw_heart(heart_x, heart_y, heart_color)
    # 刷新屏幕
    pygame.display.flip()
    # 控制帧率
    pygame.time.Clock().tick(1)

效果

完整代码

import pygame
import sys
import random
import numpy as np
# 初始化 Pygame
pygame.init()
# 设置窗口大小
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Random Hearts')
def draw_heart(x, y, color):
    # 生成爱心形状的直角坐标数据点
    t = np.linspace(0, 2 * np.pi, 1000)
    heart_x = x + 16 * np.sin(t)**3
    heart_y = y - (13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t))
    # 绘制爱心形状
    pygame.draw.lines(screen, color, False, list(zip(heart_x, heart_y)), 2)
# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    # 随机生成爱心的位置和颜色
    heart_x = random.randint(0, width)
    heart_y = random.randint(0, height)
    heart_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    # 在随机位置绘制不清空的爱心
    draw_heart(heart_x, heart_y, heart_color)
    # 刷新屏幕
    pygame.display.flip()
    # 控制帧率
    pygame.time.Clock().tick(1)
# 退出程序
pygame.quit()
sys.exit()


目录
相关文章
|
8月前
|
人工智能 Linux 开发工具
Python从零到一:手把手带你写出第一个实用程序
Python语法简洁易懂,适合编程新手入门。它广泛应用于人工智能、自动化办公、Web开发等领域。学习Python可快速搭建项目,拥有丰富库支持和强大社区资源。通过本教程,你将掌握基础语法、环境搭建、程序逻辑控制及实战项目开发,开启编程之旅。
1163 0
|
7月前
|
设计模式 决策智能 Python
Python条件控制:让程序学会"思考"的魔法
本文深入浅出地讲解Python条件控制,从基础if语句到多分支、嵌套结构,再到简洁的三元表达式与Python 3.10新增的match-case模式匹配,结合电商折扣、会员等级、ATM系统等实战案例,全面掌握程序“智能决策”的核心逻辑。
526 0
|
11月前
|
人工智能 并行计算 开发者
CUDA重大更新:原生Python可直接编写高性能GPU程序
NVIDIA在2025年GTC大会上宣布CUDA并行计算平台正式支持原生Python编程,消除了Python开发者进入GPU加速领域的技术壁垒。这一突破通过重新设计CUDA开发模型,引入CUDA Core、cuPyNumeric、NVMath Python等核心组件,实现了Python与GPU加速的深度集成。开发者可直接用Python语法进行高性能并行计算,显著降低门槛,扩展CUDA生态,推动人工智能、科学计算等领域创新。此更新标志着CUDA向更包容的语言生态系统转型,未来还将支持Rust、Julia等语言。
753 3
CUDA重大更新:原生Python可直接编写高性能GPU程序
|
10月前
|
PyTorch 算法框架/工具 C++
人工智能算法python程序运行环境安装步骤整理
本教程详细介绍Python与AI开发环境的配置步骤,涵盖软件下载、VS2017安装、Anaconda配置、PyCharm设置及组件安装等内容,适用于Windows系统,助你快速搭建开发环境。
|
10月前
|
机器学习/深度学习 前端开发 API
python3如何使用QT编写基础的对话框程序
Qt与Python结合形成了PyQt/PySide,为桌面应用开发提供强大支持。通过简单安装PyQt5或PySide6,开发者可快速搭建跨平台GUI应用。本文从创建基础对话框入手,介绍布局管理、信号与槽机制、对话框模式及样式表美化等核心功能,并探讨模态窗口、事件驱动编程和资源打包等内容。最后,引导读者探索模型视图架构、多线程处理等进阶技术,逐步掌握用Python+Qt开发高效桌面应用的技能。
352 0
|
数据可视化 流计算 Python
Python创意爱心代码大全:从入门到高级的7种实现方式
本文分享了7种用Python实现爱心效果的方法,从简单的字符画到复杂的3D动画,涵盖多种技术和库。内容包括:基础字符爱心(一行代码实现)、Turtle动态绘图、Matplotlib数学函数绘图、3D旋转爱心、Pygame跳动动画、ASCII艺术终端显示以及Tkinter交互式GUI应用。每种方法各具特色,适合不同技术水平的读者学习和实践,是表达创意与心意的绝佳工具。
9290 0
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
247 4
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
380 28
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序

推荐镜像

更多