diff --git a/__pycache__/spider.cpython-310.pyc b/__pycache__/spider.cpython-310.pyc new file mode 100644 index 0000000..ebb1655 Binary files /dev/null and b/__pycache__/spider.cpython-310.pyc differ diff --git a/__pycache__/spiderall.cpython-310.pyc b/__pycache__/spiderall.cpython-310.pyc new file mode 100644 index 0000000..121532c Binary files /dev/null and b/__pycache__/spiderall.cpython-310.pyc differ diff --git a/__pycache__/spiderweb.cpython-310.pyc b/__pycache__/spiderweb.cpython-310.pyc index 7ed932e..cad5b7e 100644 Binary files a/__pycache__/spiderweb.cpython-310.pyc and b/__pycache__/spiderweb.cpython-310.pyc differ diff --git a/drawing.py b/drawing.py index 3c244bf..ed32c6e 100644 --- a/drawing.py +++ b/drawing.py @@ -4,11 +4,25 @@ # # (Halloween Theme with Spider exploding) + from turtle import * from superturtle import * from superturtle.movement import * +from spider import * from spiderweb import * -draw_web(400) -hideturtle() -done() + +def drawing(side_length): + draw_web(side_length) + penup() + goto(0, 0) + setheading(0) + pendown() + draw_spider() + draw_connection_line() + hideturtle() + done() + +drawing(300) + + \ No newline at end of file diff --git a/spider.py b/spider.py new file mode 100644 index 0000000..f3a38e9 --- /dev/null +++ b/spider.py @@ -0,0 +1,65 @@ +from turtle import * +from superturtle import * +from superturtle.movement import * + +from turtle import * + +def draw_circle(radius, x, y, color=None): + "Draw a circle with the given radius at the (x, y) position. Optionally fill with color." + penup() + goto(x, y - radius) # Move to the correct start point + pendown() + + if color: + fillcolor(color) # Set the fill color + begin_fill() # Start filling the circle with color + + circle(radius) # Draw the circle + + if color: + end_fill() # End the filling + +def draw_spider(): + + # Step 1: Draw the big circle (spider body) on top of the small circle + draw_circle(60, 30, 60, color="grey") + + # Step 2: Draw the small circle (spider head) + draw_circle(20, 30, 0, color="black") + + # Step 3: Draw legs on big circle + draw_legs(60, 30, 60) + +def draw_legs(radius, x, y): + "Draws legs starting from the perimeter of the big circle (spider's body)" + leg_length = 50 # Length of the legs + pensize(4) + + # Draw legs at equal angles from the top of the big circle + angles = [-60, -30, 0, 30, 150, 180, 210, 240] # Angles for legs (top-left, top-right, and bottom) + + for angle in angles: + penup() + goto(x, y) # Go to the center of the big circle + setheading(angle) # Set the heading to the desired angle + forward(radius) # Move forward to the perimeter of the big circle + pendown() + forward(leg_length) # Draw the leg + penup() + backward(leg_length) # Move back to the perimeter of the big circle + +def draw_connection_line(): + "Draw a line from the top of the big circle (head) to the center of the small circle (body)" + penup() + goto(30, 400) + pendown() + goto(30, 120) # Draw a line to the center of the small circle (spider's body) + penup() + goto(0, 0) + +# Draw the spider +# draw_spider() +# draw_connection_line() +# hideturtle() +# done() + \ No newline at end of file diff --git a/spiderall.py b/spiderall.py new file mode 100644 index 0000000..17c6680 --- /dev/null +++ b/spiderall.py @@ -0,0 +1,121 @@ +from turtle import * +from superturtle import * +from superturtle.movement import * + +segment_positions = [] +def draw_web_line(side_length): + global segment_positions + fly(-350, 350) + for side in range(5): + draw_segmented_line(side_length) + right(22.5) + fly(-350, 350) + #right(22.5) + +def draw_segmented_line(side_length): + "Draws a line with 4 equal segments and marks the points" + segment_length = side_length / 4 + line_segments = [] + for segment in range(4): + forward(segment_length) + mark_point() # Mark the points at each segment + line_segments.append(pos()) + segment_positions.append(line_segments) + + +def mark_point(): + "Marks a point at the current location" + dot(5, "black") # Draw a dot to mark the segment points + +def connect_segments(): + "Connects the corresponding segment points of adjacent lines" + global segment_positions + for i in range(4): # Iterate over the 4 segments + for j in range(5): # Iterate over the 5 lines + next_j = (j + 1) % 5 # To wrap around to the first line after the fifth + # Skip connections if either segment is near the x-axis or y-axis + if segment_positions[j][i][0] == -350 or segment_positions[next_j][i][1] == 350: + continue + + penup() + goto(segment_positions[j][i]) # Go to the current segment + pendown() + goto(segment_positions[next_j][i]) # Draw a line to the next segment + +# Main function to draw the web +def draw_web(side_length): + draw_web_line(side_length) + connect_segments() + + +# Draw the web lines +# draw_web(300) +# hideturtle() +# done() + +def draw_circle(radius, x, y, color=None): + "Draw a circle with the given radius at the (x, y) position. Optionally fill with color." + penup() + goto(x, y - radius) # Move to the correct start point + pendown() + + if color: + fillcolor(color) # Set the fill color + begin_fill() # Start filling the circle with color + + circle(radius) # Draw the circle + + if color: + end_fill() # End the filling + +def draw_spider(): + + + # Step 1: Draw the big circle (spider body) on top of the small circle + draw_circle(60, 30, 60, color="grey") + + # Step 2: Draw the small circle (spider head) + draw_circle(30, 30, 0, color="black") + + # Step 3: Draw legs on big circle + draw_legs(60, 30, 60) + +def draw_legs(radius, x, y): + "Draws legs starting from the perimeter of the big circle (spider's body)" + leg_length = 50 # Length of the legs + pensize(4) + + # Draw legs at equal angles from the top of the big circle + angles = [-60, -30, 0, 30, 150, 180, 210, 240] # Angles for legs (top-left, top-right, and bottom) + + for angle in angles: + penup() + goto(x, y) # Go to the center of the big circle + setheading(angle) # Set the heading to the desired angle + forward(radius) # Move forward to the perimeter of the big circle + pendown() + forward(leg_length) # Draw the leg + penup() + backward(leg_length) # Move back to the perimeter of the big circle + +def draw_connection_line(): + "Draw a line from the top of the big circle (head) to the center of the small circle (body)" + penup() + goto(30, 400) + pendown() + goto(30, 120) # Draw a line to the center of the small circle (spider's body) + penup() + goto(0, 0) + +def drawing(side_length): + draw_web(side_length) + penup() + goto(0, 0) + setheading(0) + pendown() + draw_spider() + draw_connection_line() + hideturtle() + done() + +drawing(300) \ No newline at end of file diff --git a/spiderweb.py b/spiderweb.py index d755ba7..59f838e 100644 --- a/spiderweb.py +++ b/spiderweb.py @@ -36,7 +36,7 @@ def connect_segments(): # Skip connections if either segment is near the x-axis or y-axis if segment_positions[j][i][0] == -350 or segment_positions[next_j][i][1] == 350: continue - + penup() goto(segment_positions[j][i]) # Go to the current segment pendown() @@ -47,8 +47,9 @@ def draw_web(side_length): draw_web_line(side_length) connect_segments() -# Draw the web lines -draw_web(400) -hideturtle() -done() + +# Draw the web lines +# draw_web(300) +# hideturtle() +# done()