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

Змейка — это список

Что ты увидишь Три квадрата в ряд. Первый — ярко-зелёный (голова), остальные тёмные (хвост). Файл: step3_snake.py
⬇️ Скачать код урока

🔍 Главная идея

Змейка — это просто список клеток. Каждая клетка — пара чисел (x, y), которая называется кортеж.

snake = [(5, 10), (4, 10), (3, 10)]
#         ↑ голова    ↑ хвост…

Первый элемент списка, snake[0], — это голова. Всё остальное — хвост. Запомни: в Python счёт идёт с нуля, поэтому первый элемент — это номер 0.

📝 Код урока

snake = [(5, 10), (4, 10), (3, 10)]

while True:
    # ... события, screen.fill(BLACK) ...

    # Рисуем голову ярко-зелёным
    head_x, head_y = snake[0]
    head_rect = pygame.Rect(head_x * CELL, head_y * CELL, CELL, CELL)
    pygame.draw.rect(screen, GREEN, head_rect)

    # Рисуем хвост тёмным. snake[1:] — все клетки КРОМЕ первой.
    for segment in snake[1:]:
        seg_x, seg_y = segment
        rect = pygame.Rect(seg_x * CELL, seg_y * CELL, CELL, CELL)
        pygame.draw.rect(screen, DARK_GREEN, rect)

    pygame.display.flip()
    clock.tick(60)

🔍 Две важные строчки

head_x, head_y = snake[0] — распаковка

snake[0] — это голова, кортеж (5, 10). Эта запись берёт пару и раскладывает её по двум переменным сразу:

snake[0] = (5, 10) head_x = 5 head_y = 10

Это короткая запись. Длинный вариант выглядел бы так:

head_x = snake[0][0]   # x головы
head_y = snake[0][1]   # y головы

snake[1:] — «всё, кроме первого»

Двоеточие в квадратных скобках называется срез. snake[1:] значит «возьми список начиная с элемента номер 1 и до конца» — то есть весь хвост без головы. Поэтому голову мы рисуем отдельно (ярко), а хвост — в цикле (тёмным).

💡 Почему это круто Всё, что мы будем делать дальше — двигать, растить, проверять столкновения — это просто действия со списком: добавить элемент, убрать элемент, проверить «есть ли в списке». Никакой магии.
🎮 Попробуй сам 1. Добавь змейке ещё два сегмента: (2, 10) и (1, 10).
2. Сделай змейку вертикальной: [(5, 10), (5, 9), (5, 8)].
← НазадУрок 2 — Квадрат