Menu
CoddyTech
flag Ru iconРусскийdown icon

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

Урок 21 из 40 курса Создавай игры на Pygame на Coddy.

Змея поворачивает один раз при каждом нажатии клавиши, поэтому считывай стрелки из событий KEYDOWN. Словарь сопоставляет каждую клавишу со стрелкой соответствующему направлению:

TURNS = {
    pygame.K_LEFT: (-1, 0),
    pygame.K_RIGHT: (1, 0),
    pygame.K_UP: (0, -1),
    pygame.K_DOWN: (0, 1),
}

event.key in TURNS истинно для всех четырёх стрелок, а TURNS[event.key] — это новое направление. Одна проверка заменяет четыре инструкции if:

elif event.type == pygame.KEYDOWN and event.key in TURNS:
    direction = TURNS[event.key]

Направление вверх — это (0, -1): номера строк уменьшаются по мере движения вниз по окну, как координаты пикселей.

challenge icon

Задание

Легко
  1. Над pygame.init() добавь словарь TURNS для четырёх стрелок.
  2. В цикле обработки событий, когда клавиша события KEYDOWN есть в TURNS, присвой direction её значение.

Попробуйте сами

import pygame

CELL = 20
COLS, ROWS = 24, 18

pygame.init()
screen = pygame.display.set_mode((COLS * CELL, ROWS * CELL))
pygame.display.set_caption("Snake")
clock = pygame.time.Clock()


def draw_cell(cell, color):
    col, row = cell
    pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))


head = (5, 9)
direction = (1, 0)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    head = (head[0] + direction[0], head[1] + direction[1])

    screen.fill((30, 30, 46))
    draw_cell(head, (180, 255, 160))
    pygame.display.flip()
    clock.tick(10)

pygame.quit()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Создавай игры на Pygame

Потренируйтесь самостоятельно: Песочница Pygame