Rozdział 19 · Projekt: „Wąż”
Nasz wąż je!
Zjedzone jabłko dodaje segment – a każdy segment musi prawidłowo podążać za poprzednim.
Nasz wąż je!
Sprawdź, czy główka jest wystarczająco blisko jabłka (metoda)
.distance() liczy odległość między dwoma żółwiami) — jeśli
Tak, jabłko jest „zjadane”
eda.py
def proverit_edu():
global schet
if golova.distance(yabloko) < RAZMER_SHAGA:
novoe_yabloko()
dobavit_segment()
schet += 10
obnovit_tablo()
Zmuszamy całą węża do ruchu
Każdy segment ciała powinien zajmować miejsce poprzednich segment (a pierwszy to miejsce głów) — tworzy to efekt "wąż pełza jako całość" zamiast "części poruszają się niezależnie":
dobavit_segment.py
def dobavit_segment():
novyj = turtle.Turtle()
novyj.speed(0)
novyj.shape("square")
novyj.color("grey")
novyj.penup()
segmenty.append(novyj)
dvigat_telo.py
def dvigat_telo():
# zacznij od ogona i przejdź do głowy, aby nie tracić pozycji po drodze
for indeks in range(len(segmenty) - 1, 0, -1):
x = segmenty[indeks - 1].xcor()
y = segmenty[indeks - 1].ycor()
segmenty[indeks].goto(x, y)
if segmenty:
segmenty[0].goto(golova.xcor(), golova.ycor())
Kolejność wywołań decyduje o wszystkim
dvigat_telo() jest koniecznie nazywane do dvigat_golovu() — w przeciwnym razie pierwszy segment już „odziedziczy” nowy pozycję głowy zamiast starej, a ciało zlepi się z głową w jeden punkt.
Praktyka: jedzenie jabłek i poruszanie się ciałem
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie