🎮 Все игры 🐍 Змейка
1 2 3 4 5 6 7
Урок 4 · самый важный

Змейка двигается сама

Что ты увидишь Змейка едет вправо и уезжает за край экрана. Файл: step4_move.py
⬇️ Скачать код урока

🔍 Направление — это тоже пара чисел

Куда ползёт змейка, мы храним в переменной direction — паре (dx, dy): насколько сдвинуться по x и по y за один шаг.

directionКуда
(1, 0)вправо (x +1)
(-1, 0)влево (x −1)
(0, 1)вниз (y +1)
(0, -1)вверх (y −1)

Помни: в играх ось y смотрит вниз. Поэтому «вверх» — это y минус один.

⭐ Самый красивый трюк в игре

Змейка не двигается целиком. Каждый кадр мы добавляем новую голову спереди и убираем хвост сзади. Со стороны это выглядит как движение!

Было: [Г][.][.][.] Шаг 1: [Н][Г][.][.][.] ← snake.insert(0, new_head) добавили голову Шаг 2: [Н][Г][.][.] ← snake.pop() убрали хвост

📝 Код урока

direction = (1, 0)   # едем вправо

while True:
    # ... события ...

    # Считаем новую голову: старая голова + направление
    head_x, head_y = snake[0]
    new_head = (head_x + direction[0], head_y + direction[1])

    snake.insert(0, new_head)  # новая голова в начало
    snake.pop()                # убираем последний (хвост)

    # ... рисуем змейку как в уроке 3 ...

    clock.tick(10)  # 10 кадров в секунду!

🔍 Разбор

Считаем новую голову

Берём координаты головы и прибавляем направление:

new_head = (head_x + direction[0], head_y + direction[1])
#           5 + 1 = 6          10 + 0 = 10   →  (6, 10)

insert и pop

⚠️ Самая частая ошибка Если забыть clock.tick(10), змейка будет лететь 60 клеток в секунду — ты даже не успеешь моргнуть. Число 10 значит «10 шагов в секунду».
🎮 Попробуй сам 1. Пусти змейку вверх: direction = (0, -1).
2. По диагонали: direction = (1, 1). Странно ползёт, да?
3. Сделай быстрее или медленнее: поменяй 10 в tick.
← НазадУрок 3 — Змейка-список