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.
Thử thách
DễĐiều khiển con 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: 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
3Lưới và danh sách
Lưới ôTừng bước mộtTự luyện tập: Playground Pygame