import turtle
import random
import time
screen = turtle.Screen()
screen.setup(width=900, height=700)
screen.bgcolor("black")
screen.title("Tree")
screen.tracer(0)
pen = turtle.Turtle()
pen.hideturtle()
pen.speed(0)
pen.color("brown")
pen.pensize(2)
pen.left(90)
def draw_tree(branch_length, pen, level):
if level > 0:
pen.forward(branch_length)
screen.update()
time.sleep(0.005)
current_pos = pen.pos()
current_heading = pen.heading()
angle = 25 + random.uniform(-10, 10)
pen.right(angle)
draw_tree(branch_length * random.uniform(0.75, 0.85), pen, level - 1)
pen.penup()
pen.goto(current_pos)
pen.setheading(current_heading)
pen.pendown()
pen.left(angle)
draw_tree(branch_length * random.uniform(0.75, 0.85), pen, level - 1)
pen.penup()
pen.goto(current_pos)
pen.setheading(current_heading)
pen.pendown()
if level <= 3 and random.random() > 0.6:
heart_locations.append(pen.pos())
def draw_heart(x, y, size):
heart_pen_local = turtle.Turtle()
heart_pen_local.hideturtle()
heart_pen_local.speed(0)
heart_pen_local.penup()
heart_pen_local.goto(x, y)
heart_pen_local.pendown()
heart_pen_local.color("crimson", "pink")
heart_pen_local.begin_fill()
heart_pen_local.left(140)
heart_pen_local.forward(size * 11.65)
for _ in range(200):
heart_pen_local.right(1)
heart_pen_local.forward(size * 0.1)
heart_pen_local.left(120)
for _ in range(200):
heart_pen_local.right(1)
heart_pen_local.forward(size * 0.1)
heart_pen_local.forward(size * 11.65)
heart_pen_local.end_fill()
heart_pen_local.setheading(90)
heart_pen_local.penup()
heart_pen_local.goto(0, 0)
if __name__ == "__main__":
pen.penup()
pen.goto(0, -300)
pen.pendown()
heart_locations = []
initial_branch_length = 120
tree_levels = 8
draw_tree(initial_branch_length, pen, tree_levels)
while True:
visible_hearts_count = int(len(heart_locations) * 0.7)
visible_hearts = random.sample(heart_locations, k=visible_hearts_count)
for pos in visible_hearts:
draw_heart(pos[0], pos[1], 1)
screen.update()
time.sleep(0.5)
heart_pen_global = turtle.Turtle()
heart_pen_global.hideturtle()
heart_pen_global.speed(0)
heart_pen_global.clear()
screen.update()
time.sleep(0.2)
heart_pen_global.clear()
turtle.done()