Загрузка данных
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)