from turtle import Turtle, Screen
def push_state(t, stack):
"""Сохраняет текущее состояние черепахи в стек."""
state = (t.pos(), t.heading(), t.isdown(), t.pencolor(), t.pensize())
stack.append(state)
def pop_state(t, stack):
"""Восстанавливает состояние черепахи из стека."""
pos, heading, is_down, color, size = stack.pop()
t.penup()
t.goto(pos)
t.setheading(heading)
t.color(color)
t.pensize(size)
if is_down:
t.pendown()
else:
t.penup()
def draw_centered_square(t, size):
"""Рисует квадрат с центром в текущей позиции черепахи."""
t.penup()
# Переходим в левый нижний угол
t.forward(size / 2)
t.left(90)
t.forward(size / 2)
t.right(90)
t.pendown()
# Рисуем квадрат
for _ in range(4):
t.forward(size)
t.right(90)
# === Основная программа ===
screen = Screen()
screen.setup(600, 400)
screen.bgcolor('white')
screen.title('Задание 4 – Вариант 3')
t = Turtle()
t.speed(0)
t.pensize(2)
t.color('blue')
t.hideturtle()
stack = []
# Рисуем 10 квадратов
side = 20 # сторона первого квадрата
for i in range(10):
push_state(t, stack) # сохраняем состояние (центр + угол)
draw_centered_square(t, side)
pop_state(t, stack) # возвращаемся в центр и восстанавливаем угол
t.left(10) # дополнительный поворот на 10°
side += 15 # увеличиваем сторону на 15
screen.exitonclick()