Projekt: wyścig Turtle z użyciem pętli
Kilka żółwi na jednym ekranie jednocześnie — i podsumowujące wyniki całego laboratorium projektowego.
TurtlelistwhilerandomCo tworzymy
Pamiętaj z rozdziału 6, że ekran i żółw to różne obiekty, a żółwie mogą być kilka? Czas go użyć: rasa kilku żółwi z losowym krok.
import turtle
import random
random.seed(2)
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
screen.exitonclick()
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"Żółw kolorowy wygrał {pobeditel}!")
uchastniki jest zwykłym lista Python (Rozdział 11), który po prostu przechowuje obiekty zamiast liczb turtle.Turtle(). Pętla for t in uchastniki iteruje przez to w taki sam sposób, jak przechodziłby przez lista liczby czy łańcuch znaków.Rysuj pionową linię na mecie (x=200) przed startem wyścigu, używając osobnego „sędziego”
Podsumowanie rozdziału
Co teraz umiemy budować
Jak daleko zaszliśmy
| Rozdział 1 | Rozdział 12 |
|---|---|
print("Hello") | interaktywna gra, analizator tekstu, quiz, notatnik, dane strukturalne, generator graficzny |
Lista kontrolna gotowości projektu
Pełna lista kontrolna znajduje się w §12.2 „Budowanie projektu krok po kroku”
Co dalej: Dlaczego funkcje są potrzebne
Przyjrzyj się bliżej projektom w tym rozdziale: Normalizacja wejścia
(.strip().lower()) powtarza się w analizatorze tekstu, w
konsole zespołu i w quizie. Napęd, który trzeba uruchomić przed cyklem, jest taki sam
błąd był korygowany trzy razy w różnych Debug Lab. Wzór na kąt obrotu pojawia się Turtle w
Choinka, w mandali i w pracowni wielokątów.
Co skonsolidowaliśmy w tym rozdziale
- Rozkład to rozbicie dużego zadania na małe, zrozumiałe kroki.
- Rozwój stopniowy — w małych krokach każdy jest sprawdzany jednocześnie, a nie 80 linijek naraz.
- Dane oddzielne od algorytmu — quiz i studio polygon pokazały, że ta sama logika działa dla wszystkich danych wejściowych.
- Refaktoryzacja — ulepszenie struktury programu bez zmiany jego działania.
- Warunki, pętle, łańcuch znaków, liczby,
random, listy/zbiory/słowniki i Turtle — pracowały razem po raz pierwszy, w jednym programie, a nie osobno. - Systemowy workflow debugowania: oczekiwanie vs rzeczywistość → pierwsza rozbieżność → przyczyna → poprawka.
- Złożone wyniki (quiz, analizator tekstu, mandala) — zawsze kombinacja kilku prostych, już znanych technik.