from turtle import *
from superturtle import *
from superturtle.movement import *
import time
import random
from spider import draw_circle, draw_legs, draw_connection_line, draw_spider
from spiderweb import draw_web

# Function to simulate the explosion of the spider like a firework
def explode_spider(x, y, radius):
    """Simulates the explosion of the spider like a firework."""
    for _ in range(20):
        penup()
        goto(x, y)
        setheading(random.randint(0, 360))  # Random direction
        forward(random.randint(radius, radius * 3))  # Random distance
        pendown()
        dot(10, random.choice(["red", "orange", "yellow", "white"]))  # Draw explosion dot
        penup()
    
    time.sleep(1)
    update()  # Update the screen to show the explosion
    clear()  # Clear the screen after explosion
    update()

    # Draw rainbow after explosion
    draw_rainbow_splash()

# Function to draw a rainbow splash
def draw_rainbow_splash():
    """Draws a rainbow like a splash of colorful dashed and solid lines of different lengths."""
    colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
    penup()
    goto(0, 0)  # Start from the center of the screen
    for color in colors:
        for _ in range(2):  # Repeat each color two times
            setheading(random.randint(0, 360))  # Random direction for each line
            pencolor(color)
            pensize(2)
            length = random.randint(100, 200)  # Random length for each line
            pendown()
            if random.choice([True, False]):  # Randomly choose between dashed and solid lines
                for _ in range(length // 15):  # Create dashed lines
                    forward(10)
                    penup()
                    forward(5)
                    pendown()
            else:
                forward(length)  # Create solid line
            penup()
            goto(0, 0)  # Return to the center
    update()  # Update the screen to show the rainbow splash



# Function to draw the entire scene
def draw_scene(side_length):
    """Draws the entire scene with the web, spider, and animation."""
    draw_web(side_length)  # Draw the web
    update()  # Update the screen to show the web
    time.sleep(1)
    penup()
    goto(0, 0)
    setheading(0)
    pendown()
    draw_spider(60)  # Draw the spider with the specified radius
    update()  # Update the screen to show the spider
    draw_connection_line(120)  # Draw the connection line from the top of the screen to the spider
    update()  # Update the screen to show the connection line
    hideturtle()
    time.sleep(1)
    explode_spider(30, 60, 60)  # Explode the spider
    done()

# Setup
setup(width=800, height=800)
tracer(0)  # Disable automatic screen updates for smooth animation

# Draw the entire scene
draw_scene(300)