Загрузка данных


import turtle

# Функция рисования машинки
def draw_car(t, size, color):
    t.setheading(0)  # Смотрим строго направо (горизонтально)
    
    # Кузов (прямоугольник)
    t.fillcolor(color)
    t.begin_fill()
    for _ in range(2):
        t.forward(size * 2)
        t.left(90)
        t.forward(size * 0.8)
        t.left(90)
    t.end_fill()
    
    # Кабина
    t.fillcolor("lightblue")
    t.begin_fill()
    t.left(90)
    t.forward(size * 0.5)
    t.right(90)
    t.forward(size * 0.8)
    t.right(90)
    t.forward(size * 0.5)
    t.right(90)
    t.forward(size * 0.8)
    t.end_fill()
    
    # Возвращаемся к исходной ориентации
    t.setheading(0)
    
    # Заднее колесо
    t.penup()
    t.goto(t.xcor() + size * 0.3, t.ycor() - size * 0.3)
    t.pendown()
    t.fillcolor("black")
    t.begin_fill()
    t.circle(size * 0.15)
    t.end_fill()
    
    # Переднее колесо
    t.penup()
    t.goto(t.xcor() + size * 1.2, t.ycor())
    t.pendown()
    t.begin_fill()
    t.circle(size * 0.15)
    t.end_fill()
    
    t.penup()
    t.setheading(0)

# Функция рисования поезда
def draw_train(t, size, color):
    t.setheading(0)  # Смотрим строго направо
    
    # Вагон
    t.fillcolor(color)
    t.begin_fill()
    for _ in range(2):
        t.forward(size * 2.5)
        t.left(90)
        t.forward(size * 0.9)
        t.left(90)
    t.end_fill()
    
    # Крыша
    t.fillcolor("darkred")
    t.begin_fill()
    t.left(90)
    t.forward(size * 0.4)
    t.right(90)
    t.forward(size * 2.5)
    t.right(90)
    t.forward(size * 0.4)
    t.end_fill()
    
    t.setheading(0)
    
    # Окна
    t.penup()
    t.goto(t.xcor() + size * 0.4, t.ycor() + size * 0.2)
    t.pendown()
    t.fillcolor("yellow")
    
    for i in range(3):
        t.begin_fill()
        for _ in range(2):
            t.forward(size * 0.5)
            t.left(90)
            t.forward(size * 0.4)
            t.left(90)
        t.end_fill()
        t.penup()
        t.forward(size * 0.7)
        t.pendown()
    
    t.setheading(0)
    
    # Колеса
    t.penup()
    t.goto(t.xcor() - size * 1.8, t.ycor() - size * 0.4)
    t.pendown()
    t.fillcolor("black")
    
    for i in range(3):
        t.begin_fill()
        t.circle(size * 0.13)
        t.end_fill()
        t.penup()
        t.forward(size * 0.9)
        t.pendown()
    
    t.penup()
    t.setheading(0)

# Функция для создания разных объектов
def moving_object(t, object_type, size, color):
    t.setheading(0)  # КЛЮЧЕВОЙ МОМЕНТ: всегда смотрим горизонтально
    t.penup()
    
    if object_type == "car":
        draw_car(t, size, color)
    elif object_type == "train":
        draw_train(t, size, color)
    else:
        # Запасной вариант
        t.fillcolor(color)
        t.begin_fill()
        for _ in range(4):
            t.forward(size)
            t.left(90)
        t.end_fill()
    
    t.penup()
    t.setheading(0)

# Основная программа
if __name__ == "__main__":
    screen = turtle.Screen()
    screen.setup(900, 600)
    screen.bgcolor("#87CEEB")  # Небесно-голубой
    screen.tracer(0)
    
    # Рисуем дорогу
    road = turtle.Turtle()
    road.speed(0)
    road.penup()
    road.goto(-450, -50)
    road.pendown()
    road.fillcolor("#555555")
    road.begin_fill()
    for _ in range(2):
        road.forward(900)
        road.left(90)
        road.forward(100)
        road.left(90)
    road.end_fill()
    
    # Разметка дороги (белая пунктирная линия)
    road.penup()
    road.goto(-400, 0)
    road.pendown()
    road.color("white")
    road.width(3)
    for i in range(20):
        road.forward(30)
        road.penup()
        road.forward(20)
        road.pendown()
    
    road.hideturtle()
    
    # Создаем движущийся объект
    move = turtle.Turtle()
    move.speed(0)
    move.width(2)
    move.hideturtle()
    move.penup()
    move.goto(-400, -25)  # На уровне дороги
    
    # Параметры (меняй здесь!)
    current_object = "car"   # "car" или "train"
    current_color = "red"
    current_size = 25
    speed_step = 4
    
    # Бесконечный цикл движения
    while True:
        move.clear()
        
        # Сохраняем позицию и рисуем объект
        x_pos = move.xcor()
        y_pos = move.ycor()
        
        moving_object(move, current_object, current_size, current_color)
        
        screen.update()
        
        # Двигаем черепашку, а не рисунок
        move.goto(x_pos + speed_step, y_pos)
        
        # Если уехал за экран — возвращаем
        if move.xcor() > 420:
            move.goto(-420, -25)