用海龟画图制作一个简单的爱心

效果展示图

效果展示图

1.导入必要的模块:

import turtle
import random

2.设置画布大小和背景颜色:

turtle.setup(600, 600)
turtle.bgcolor('black')

 

3.定义粒子类 Particle

初始化粒子的形状、位置、速度等属性。

move() 方法控制粒子的运动,包括旋转、前进、更新位置等。                                             

定义绘制爱心的函数 draw_heart():                                                                                                                                                   

4.使用 Turtle 绘制一个简单的爱心形状。                                   

5.初始化粒子列表 particles。                                                   

6.调用 draw_heart() 函数绘制爱心形状。                                   

循环生成粒子对象,并添加到 particles 列表中:

7.循环生成粒子对象,并添加到 particles 列表中:

for i in range(100):
    particles.append(Particle())

8.在一个无限循环中,让每个粒子移动并更新画

while True:
    for p in particles:
        p.move()
    turtle.update()

9.最后调用 turtle.done() 来保持窗口显示状态。

注意:这段代码会一直循环运行,直到手动关闭窗口。每次运行时,会生成100个随机粒子,并通过 move() 方法实现粒子的运动效果

所有代码如下:

import turtle
import random

# 设置画布大小和背景颜色
turtle.setup(600, 600)
turtle.bgcolor('black')

# 定义粒子的类
class Particle(turtle.Turtle):
    def __init__(self):
        turtle.Turtle.__init__(self, shape='circle', visible=False)
        self.pu()
        self.speed(0)
        self.setundobuffer(None)
        self.shapesize(random.uniform(0.1, 0.5))
        self.fillcolor(random.choice(['red', 'pink', 'white']))
        self.goto(random.randint(-250, 250), random.randint(-250, 250))
        self.setheading(random.randint(0, 360))
        self.showturtle()
        self.vx = random.uniform(-2, 2)
        self.vy = random.uniform(-2, 2)
        self.life = random.randint(20, 50)

    # 粒子运动的方法
    def move(self):
        self.lt(random.randint(-10, 10))
        self.fd(2)
        self.vx *= 8.4
        self.vy *= 4.1
        self.setx(self.xcor() + self.vx)
        self.sety(self.ycor() + self.vy)
        self.life -= 1
        if self.life <= 0:
            self.clear()
            self.hideturtle()

# 定义绘制爱心的函数
def draw_heart():
    turtle.color('red', 'pink')
    turtle.begin_fill()
    turtle.lt(45)
    turtle.fd(200)
    turtle.circle(100, 180)
    turtle.rt(90)
    turtle.circle(100, 180)
    turtle.fd(200)
    turtle.end_fill()

# 初始化粒子列表
particles = []

# 绘制粒子组成的爱心
draw_heart()

# 循环生成粒子
for i in range(100):
    particles.append(Particle())

# 粒子运动循环
while True:
    for p in particles:
        p.move()
    turtle.update()

turtle.done()

创作不易点个赞和关注,持续为您更新优质作品

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值