Menu
CoddyTech

Rẽ bằng các phím mũi tên

Thuộc phần Dự án trong hành trình Pygame của Coddy. Bài học 3 trên 33.

Rắn chỉ đổi hướng một lần mỗi lần nhấn phím, vì vậy hãy đọc các phím mũi tên từ sự kiện KEYDOWN. Một từ điển ánh xạ mỗi phím mũi tên với hướng tương ứng:

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 đúng với cả bốn phím mũi tên, còn TURNS[event.key] là hướng mới. Một phép kiểm tra thay thế bốn câu lệnh if:

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

Hướng lên là (0, -1): chỉ số hàng giảm dần trong cửa sổ, giống như tọa độ pixel.

challenge icon

Thử thách

Dễ

Điều khiển rắn bằng các phím mũi tên.

  1. Phía trên pygame.init(), thêm từ điển TURNS cho bốn phím mũi tên.
  2. Trong vòng lặp sự kiện, khi phím của sự kiện KEYDOWN nằm trong TURNS, hãy đặt direction thành giá trị tương ứng.

Nhấn "Chơi" rồi nhấn phím mũi tên xuống: rắn sẽ rẽ xuống. Sau đó nhấn "Kiểm tra".

Tự làm thử

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()

Tất cả bài học trong Dự án

Tự luyện tập: Playground Pygame