Как сделать фейерверк в Python с использованием черепахи - PullRequest
1 голос
/ 14 апреля 2020

Я очень новичок в python, и я пытаюсь сделать бесконечный анимированный фейерверк на заднем плане для чего-то, что я делаю с использованием черепахи, но не знаю, как сделать это анимированным (то есть, чтобы заставить их взорваться наружу, затем исчезнуть), и мне нужна помощь, чтобы сделать это go бесконечным. Пожалуйста помоги! Вот мой текущий код:

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)  

1 Ответ

3 голосов
/ 14 апреля 2020

Вы можете очистить чертеж, используя 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()

Он не "взорвется", если вы хотите в таком случае вы можете попробовать tkinter или pygame, что намного лучше оптимизировано для графики

...