Змейка — это просто список клеток. Каждая клетка — пара чисел
(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). Эта запись
берёт пару и раскладывает её по двум переменным сразу:
Это короткая запись. Длинный вариант выглядел бы так:
head_x = snake[0][0] # x головы head_y = snake[0][1] # y головы
snake[1:] — «всё, кроме первого»Двоеточие в квадратных скобках называется срез. snake[1:]
значит «возьми список начиная с элемента номер 1 и до конца» — то есть весь
хвост без головы. Поэтому голову мы рисуем отдельно (ярко), а хвост — в
цикле (тёмным).
(2, 10) и (1, 10).[(5, 10), (5, 9), (5, 8)].