如何使用 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",如果您希望它像那样,您可以尝试 tkinter
或 pygame
,后者针对图形进行了更多优化
我是 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",如果您希望它像那样,您可以尝试 tkinter
或 pygame
,后者针对图形进行了更多优化