Куда ползёт змейка, мы храним в переменной direction — паре
(dx, dy): насколько сдвинуться по x и по y за один шаг.
| direction | Куда |
|---|---|
(1, 0) | вправо (x +1) |
(-1, 0) | влево (x −1) |
(0, 1) | вниз (y +1) |
(0, -1) | вверх (y −1) |
Помни: в играх ось y смотрит вниз. Поэтому «вверх» — это y минус один.
Змейка не двигается целиком. Каждый кадр мы добавляем новую голову спереди и убираем хвост сзади. Со стороны это выглядит как движение!
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)
snake.insert(0, new_head) — вставить new_head в
позицию 0, то есть в самое начало списка.snake.pop() — убрать последний элемент. (А
pop(0) убрал бы первый — не перепутай!)clock.tick(10), змейка будет лететь 60 клеток в
секунду — ты даже не успеешь моргнуть. Число 10 значит «10 шагов в секунду».
direction = (0, -1).direction = (1, 1). Странно ползёт, да?10 в tick.