Глава 12 · Множество увлекательных мини-проектов!

Проект 12-6: Гонка Turtle с использованием циклов

Несколько черепашек на одном экране одновременно — и подведение итогов главы.

Помните из главы 6, что экран и черепашка — разные объекты, и черепашек может быть несколько? Настало время это использовать: гонка из нескольких черепашек со случайным шагом.

gonka_turtle.py
import random

screen = turtle.Screen()
screen.setup(500, 400)

cveta = ["red", "blue", "green", "orange"]
uchastniki = []

for i, cvet in enumerate(cveta):
    t = turtle.Turtle()
    t.shape("turtle")
    t.color(cvet)
    t.penup()
    t.goto(-200, i * 40 - 60)
    uchastniki.append(t)

finish_line = 200
pobeditel = None

while pobeditel is None:
    for t in uchastniki:
        t.forward(random.randint(1, 10))
        if t.xcor() >= finish_line:
            pobeditel = t.pencolor()
            break

print(f"Победила черепашка цвета {pobeditel}!")
Список черепашек — тот же список из главы 11
uchastniki — обычный список Python (глава 11), просто хранящий не числа, а объекты turtle.Turtle(). Цикл for t in uchastniki перебирает его точно так же, как перебирал бы список чисел или строк.
★★★ Задача повышенной сложности
Финишная лента

Нарисуйте вертикальную линию на финише (x=200) перед началом гонки, используя отдельную черепашку-«судью».

Итоги

Что мы закрепили в этой главе

  • Условия (if/elif/else) и операторы сравнения — на практике в проектах 12-1 и 12-2.
  • Циклы (for, while) — основа всех фигур и спиралей в этой главе.
  • Turtle: заливка, повороты, несколько черепашек на одном экране одновременно.
  • Списки могут хранить любые объекты, включая другие объекты Python (например, черепашек), а не только числа и строки.
  • Сложные визуальные эффекты (мандала, спирали, гонка) — это всегда комбинация нескольких простых, уже знакомых приёмов.