如何使用 turtle 在 Python 制作烟花

How to make fireworks in Python using turtle

我是 python 的新手,我正在尝试在背景中为我正在使用 turtle 制作的东西制作无尽的动画烟花表演,但不知道如何制作动画(也就是说,让它们向外爆炸,然后消失),我需要帮助让它无休止地继续下去。请帮忙! 这是我当前的代码:

import random
import turtle
t = turtle.Turtle()
t.speed(0)

#firework color
def pen(color):
    t.color(color)

pen('red')

def move():
    t.pu()
    x = random.randint(-165,165)
    y = random.randint(-165,165)
    t.goto(x,y)
    t.pd()

def sky(colour):
     wn = turtle.Screen()
     wn.bgcolor(colour)

sky('black')

def firework(size):
    for num in range (20):
         t.fd(size)
         t.rt(180-(360/20))

firework(50)
move()
pen('yellow')
firework(75)
move()

pen('orange')
firework(199)   
firework(50)
move()

pen('blue')
firework(75)
move()

pen('pink')
firework(199)
firework(50)
move()

pen('yellow')
firework(75)
move()

pen('orange')
firework(199)   
firework(50)
move()

pen('blue')
firework(75)
move()

pen('pink')
firework(199)
firework(50)
move()

pen('yellow')
firework(75)
move()

pen('orange')
firework(199)   
firework(50)
move()
pen('blue')
firework(75)
move()

pen('pink')
firework(199)
firework(50)
move()

pen('yellow')
firework(75)
move()

pen('orange')
firework(199)   
firework(50)
move()

pen('blue')
firework(75)
move()

pen('pink')
firework(199)  

您可以使用t.clear()清除绘图,这将清除整个绘图。问题是您的代码格式有点乱,所以我假设您希望每个空白行都消失。

import random
import turtle
t = turtle.Turtle()
t.speed(0)

def pen(color):
    t.color(color)

pen('red')

def move():
    t.pu()
    x = random.randint(-165,165)
    y = random.randint(-165,165)
    t.goto(x,y)
    t.pd()

def sky(colour):
     wn = turtle.Screen()
     wn.bgcolor(colour)

sky('#10102a')

def firework(size):
    for num in range(20):
         t.fd(size)
         t.rt(180-(360/20))

# Begin Config #
C_BRIGHT_MIN = 0x10
C_BRIGHT_MAX = 0xef
F_SIZE_MIN = 15
F_SIZE_MAX = 200
FIREWORK_PER_CLEAR = 2
# End Config #

while True:
    # this generates a random color sequence using RGB
    color_r = hex(random.randint(C_BRIGHT_MIN, C_BRIGHT_MAX))[2:]
    color_g = hex(random.randint(C_BRIGHT_MIN, C_BRIGHT_MAX))[2:]
    color_b = hex(random.randint(C_BRIGHT_MIN, C_BRIGHT_MAX))[2:]
    pen('#'+color_r+color_g+color_b)
    for i in range(FIREWORK_PER_CLEAR):
        firework(random.randint(F_SIZE_MIN, F_SIZE_MAX))
        move()
    t.clear()

它不会 "explode out",如果您希望它像那样,您可以尝试 tkinterpygame,后者针对图形进行了更多优化