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.
Thử thách
DễĐiều khiển rắn bằng các phím mũi tên.
- Phía trên
pygame.init(), thêm từ điểnTURNScho bốn phím mũi tên. - Trong vòng lặp sự kiện, khi phím của sự kiện KEYDOWN nằm trong
TURNS, hãy đặtdirectionthà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
1Rắn
Lưới ô vuôngTừng bước mộtTự luyện tập: Playground Pygame