Глава 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 (например, черепашек), а не только числа и строки.
- Сложные визуальные эффекты (мандала, спирали, гонка) — это всегда комбинация нескольких простых, уже знакомых приёмов.