新建一个python文件,命名ILoveYou.py
音乐功能已被注释,如果需要启用音乐,去掉注释,并在ILoveYou.py文件相同的目录下添加音乐文件,注意音乐名字要和代码中的音乐名字一致,可以修改代码名字也可以修改本地的音乐名字,代码中的音乐名字叫memories.mp3
详细代码,复制粘贴即可执行
'''
使用Python的turtle和pygame库来绘制"I Love You"字样和一个心形,同时播放音乐的代码
'''
# 导入turtle库,用于绘图
import turtle
# 导入time库,用于控制时间
import time
# 从pygame库中导入mixer模块,用于播放音乐
from pygame import mixer
#如果音乐,去掉13行到17行的代码的注释
# 初始化mixer模块,设置音频参数
# mixer.pre_init(frequency=48000, size=-16, channels=2, buffer=512)
# 启动mixer模块
# mixer.init()
# 加载音乐文件
# mixer.music.load("memories.mp3")
# 创建一个turtle对象,我们将用它来绘图
t = turtle.Turtle()
# 定义一个函数,用于绘制心形的曲线部分
def curve():
# 设置画笔颜色为白色,画笔大小为3,绘图速度为5
t.pen(pencolor="white", pensize=3, speed=5)
# 循环200次
for i in range(200):
# 向右转1度
t.rt(1)
# 向前移动1步
t.fd(1)
# 定义一个函数,用于绘制心形
def love_sign():
# 设置画笔颜色为白色,填充颜色为热粉色,画笔大小为3,绘图速度为5
t.pen(pencolor="white",fillcolor="hot pink", pensize=3, speed=5)
# 设置形状为乌龟
t.shape("turtle")
# 设置形状大小
t.shapesize(1,1,1)
# 开始填充颜色
t.begin_fill()
# 向左转50度
t.lt(50)
# 向前移动113步
t.fd(113)
# 调用curve函数,绘制心形的一半
curve()
# 向左转120度
t.lt(120)
# 调用curve函数,绘制心形的另一半
curve()
# 向前移动112步
t.fd(112)
# 结束填充颜色
t.end_fill()
# 隐藏乌龟
t.hideturtle()
# 创建一个窗口对象
window = turtle.Screen()
# 设置窗口背景色为黑色
window.bgcolor('black')
# 设置窗口大小为800x700
window.screensize(800, 700)
# 设置窗口位置和大小
window.setup(width=1.0, height=1.0, startx=None, starty=None)
# 设置窗口标题为"我爱你"
window.title("我爱你")
# 播放音乐
# mixer.music.play() #如果音乐,去掉这行代码的注释
# 提起画笔,移动时不会绘图
t.penup()
# 将乌龟移动到(-80,300)的位置
t.goto(-80,300)
# 等待1秒
time.sleep(1)
# 放下画笔,移动时会绘图
t.pendown()
# 设置形状大小
t.shapesize(1,2,1)
# 'I'
# 设置画笔颜色为白色,填充色为深紫色,画笔大小为3,画笔速度为8
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=8)
t.begin_fill() # 开始填充颜色
t.fd(160) # 向前移动160个单位
t.rt(90) # 向右转90度
t.fd(25) # 向前移动25个单位
t.rt(90) # 向右转90度
t.fd(60) # 向前移动60个单位
t.lt(90) # 向左转90度
t.fd(140) # 向前移动140个单位
t.lt(90) # 向左转90度
t.fd(60) # 向前移动60个单位
t.rt(90) # 向右转90度
t.fd(25) # 向前移动25个单位
t.rt(90) # 向右转90度
t.fd(160) # 向前移动160个单位
t.rt(90) # 向右转90度
t.fd(25) # 向前移动25个单位
t.rt(90) # 向右转90度
t.fd(60) # 向前移动60个单位
t.lt(90) # 向左转90度
t.fd(140) # 向前移动140个单位
t.left(90) # 向左转90度
t.fd(60) # 向前移动60个单位
t.rt(90) # 向右转90度
t.fd(25) # 向前移动25个单位
t.end_fill() # 结束填充颜色
# End of 'I'
# 提起画笔,移动到(-550,-20)位置
t.penup()
t.goto(-550,-20)
# 放下画笔,开始绘制
t.pendown()
# 开始绘制字母'L'
# 设置画笔颜色为白色,填充色为深紫色,画笔大小为3,速度为2
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=2)
# 开始填充颜色
t.begin_fill()
# 绘制'L'的右边
t.rt(90)
t.fd(25)
t.rt(90)
t.fd(165)
# 绘制'L'的底部
t.lt(90)
t.fd(115)
t.rt(90)
t.fd(25)
t.rt(90)
t.fd(140)
t.rt(90)
t.fd(190)
t.rt(90)
# 结束填充颜色
t.end_fill()
# 提起画笔,移动到下一个字母的位置
t.penup()
t.fd(140)
# 在'L'和'O'之间留出一定的空隙
t.fd(70)
# 开始绘制字母'O'
# 设置画笔颜色为白色,填充色为青色,画笔大小为3,速度为8
t.pen(pencolor="white",fillcolor="cyan", pensize=3, speed=8)
# 开始填充颜色
t.begin_fill()
# 绘制'O'的外圈
t.rt(90)
t.fd(190)
t.lt(90)
t.pendown()
t.circle(60)
# 绘制'O'的内圈
t.lt(90)
t.penup()
t.fd(20)
t.rt(90)
t.pendown()
t.circle(40)
t.rt(90)
t.penup()
t.fd(20)
t.lt(90)
# 结束填充颜色
t.end_fill()
# 在'O'和'V'之间留出一定的空隙
t.fd(100)
# 放下画笔,准备开始绘制'V'
t.pendown()
# 'V'
# 开始绘制字母'V'
# 设置画笔颜色为白色,填充色为深紫色,画笔大小为3,速度为8
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=8)
# 开始填充颜色
t.begin_fill()
# 绘制'V'的左边
t.lt(100)
t.fd(120)
t.rt(100)
t.fd(20)
t.rt(80)
t.fd(100)
# 绘制'V'的右边
t.lt(80)
t.fd(20)
t.lt(80)
t.fd(100)
t.rt(80)
t.fd(20)
t.rt(100)
t.fd(120)
t.rt(80)
t.fd(50)
t.lt(180)
# 结束填充颜色
t.end_fill()
# 结束 'V'字母绘制
# 提起画笔,移动到下一个字母的位置
t.penup()
# 在'V'和'E'之间留出一定的空隙
t.fd(100)
# 放下画笔,准备开始绘制'E'
t.pendown()
# 开始绘制字母'E'
# 设置画笔颜色为白色,填充色为深紫色,画笔大小为3,速度为8
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=8)
# 开始填充颜色
t.begin_fill()
# 绘制'E'的外框
t.lt(90)
t.fd(120)
t.rt(90)
t.fd(80)
t.rt(90)
t.fd(20)
t.rt(90)
t.fd(60)
t.lt(90)
t.fd(30)
t.lt(90)
t.fd(60)
t.rt(90)
t.fd(20)
t.rt(90)
t.fd(60)
t.lt(90)
t.fd(30)
t.lt(90)
t.fd(60)
t.rt(90)
t.fd(20)
t.rt(90)
t.fd(80)
# 结束填充颜色
t.end_fill()
# End of 'E'
# End of 'Love'
t.penup()
t.rt(180)
# Gap between 'E' and 'Y'
t.fd(200)
t.pendown()
# Start of 'You'
# 'Y'
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=2)
t.begin_fill()
t.lt(90)
t.fd(50)
t.lt(30)
t.fd(80)
t.rt(120)
t.fd(20)
t.rt(60)
t.fd(60)
t.lt(180)
t.rt(60)
t.fd(60)
t.rt(60)
t.fd(20)
t.rt(120)
t.fd(80)
t.lt(30)
t.fd(50)
t.rt(90)
t.fd(20)
t.rt(180)
t.end_fill()
# End of 'Y'
t.penup()
# Gap between 'Y' and 'O'
t.fd(120)
t.pendown()
# 'O'
t.pen(pencolor="white",fillcolor="cyan", pensize=3, speed=8)
t.begin_fill()
t.circle(60)
t.lt(90)
t.penup()
t.fd(20)
t.pendown()
t.rt(90)
t.circle(40)
t.rt(90)
t.penup()
t.fd(20)
t.lt(90)
t.end_fill()
# End of 'O'
# Gap between 'O' and 'U'
t.fd(100)
t.circle(60, extent=60)
t.pendown()
# 'U'
t.pen(pencolor="white",fillcolor="dark violet", pensize=3, speed=8)
t.begin_fill()
t.lt(30)
# Height of 'U'
t.fd(85)
t.lt(90)
t.fd(20)
t.lt(90)
t.fd(70)
t.circle(-20, extent=180)
t.fd(70)
t.lt(90)
t.fd(20)
t.lt(90)
t.fd(85)
t.circle(40, extent=180)
t.end_fill()
# End of 'U'
# End of 'You'
t.penup()
# t.goto(300,130)
t.rt(180)
t.fd(35)
t.lt(90)
t.fd(140)
t.lt(90)
t.pendown()
# 调用函数love_sign()来绘制一个心形的标志
love_sign()
# 等待5000秒,让用户有足够的时间欣赏绘制的图形和听音乐
time.sleep(5000)
领取专属 10元无门槛券
私享最新 技术干货