您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-19
后台-插件-广告管理-内容页头部广告(手机)

前言

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

公式

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

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)
  • 1
  • 2
  • 3
  • 4

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

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

最终效果
在这里插入图片描述
完整代码

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

进阶

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

初始化pygame:

# 初始化 Pygame pygame.init() # 设置窗口大小 width, height = 800, 600 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption('Random Hearts')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

编写绘制爱心的函数,根据形参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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在主循环中一直生成随机的位置和颜色,绘制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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

效果
在这里插入图片描述

完整代码

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜