Глава 19 · Проект: «Змейка»

Проверка столкновений

Игра заканчивается при столкновении со стеной или с собственным хвостом.

Игра заканчивается при одном из двух столкновений: со стеной поля или с собственным телом.

stolknoveniya.py
def proverit_stolknoveniya():
    global igra_okonchena

    # столкновение со стеной
    if abs(golova.xcor()) > GRANICA or abs(golova.ycor()) > GRANICA:
        igra_okonchena = True

    # столкновение с собственным телом
    for segment in segmenty:
        if segment.distance(golova) < RAZMER_SHAGA / 2:
            igra_okonchena = True
abs() снова экономит код
abs(golova.xcor()) > GRANICA проверяет сразу обе стены (левую и правую) одним сравнением — вместо golova.xcor() > GRANICA or golova.xcor() < -GRANICA. Тот же приём мы использовали для факториала и других вычислений в главе 5.
★★ Самостоятельная задача
Ускорение игры

Увеличивайте скорость движения (уменьшайте задержку между шагами) на каждые 50 очков — игра станет постепенно сложнее.

Практика в Jupyter Notebook
19-07-stolknoveniya.ipynb · столкновение со стеной и с собой
Открыть ноутбук →