Rozdział 19 · Model gry

Dlaczego ciało porusza się od ogona

Aktualizacja w odwrotnej kolejności zwija wszystkie segmenty w jeden punkt — wyjaśnimy, dlaczego.

Kolejność aktualizacji segmentów nie jest szczegółem, lecz koniecznością

Rozdział 19.6 już pokazała zasadę: ciało jest aktualizowane od ogona, każdy segment zajmuje Lokalizacja poprzednich. Zobaczymy, co się stanie, jeśli zmienimy kolejność na przeciwną — od głowy do ogona:

2
1
H
był: H-S1-S2
2
1
H
stało się (poprawnie): każdy odziedziczył pozycję poprzedniego
ot_hvosta.py
def dvigat_telo():
    for indeks in range(len(segmenty) - 1, 0, -1):
        #segmenty[indeks] dostaje STARE stanowisko segmenty[indeks - 1]
        x = segmenty[indeks - 1].xcor()
        y = segmenty[indeks - 1].ycor()
        segmenty[indeks].goto(x, y)
Od głowy do ogona — segmenty łączą się w jeden punkt
Jeśli pójdziemy w odwrotnej kolejności, segmenty[0] jako pierwszy otrzyma pozycję głowy. W następnej iteracji segmenty[1] odczyta współrzędne segmenty[0] — ale to jest NOWA, tylko nadpisana pozycja, a nie stara. Po kilku iteracjach wszystkie segmenty będą w tym samym punkcie — wąż wizualnie zsuwa się w kwadrat.

Rozdział 19.18 pokaże bardziej elegancką alternatywę dla tego cyklu, „nowa głowa + starego korpusu”

Praktyka: właściwa kolejność odnowy ciała
Automatyczna weryfikacja — funkcje move_from_tail() i move_from_head_BROKEN():, kolejność aktualizacji decyduje o wszystkim
Otwórz praktykę →