Menu
CoddyTech

Rẽ theo mũi tên

Bài học 21 trên 41 trong khóa học Tạo trò chơi với Pygame của Coddy.

Rắn đổ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 là đú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 theo chiều xuống của cửa sổ, giống như pixel.

challenge icon

Thử thách

Dễ

Điều khiển con 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: con 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 Tạo trò chơi với Pygame

Tự luyện tập: Playground Pygame