Поворачивай стрелками
Урок 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): номера строк уменьшаются по мере движения вниз по окну, как координаты пикселей.
Задание
Легко- Над
pygame.init()добавь словарьTURNSдля четырёх стрелок. - В цикле обработки событий, когда клавиша события 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()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создавай игры на Pygame
3Сетки и списки
Сетка из клетокШаг за шагомПотренируйтесь самостоятельно: Песочница Pygame