Lưới ô
Bài học 19 trên 41 trong khóa học Tạo trò chơi với Pygame của Coddy.
Rắn di chuyển trên một lưới. Cửa sổ có 24 cột và 18 hàng ô, mỗi ô là hình vuông cạnh 20 pixel, và rắn di chuyển từng ô một.
Làm việc với ô và chỉ chuyển chúng thành pixel khi vẽ. Ô (col, row) bắt đầu tại pixel (col * 20, row * 20). Vẽ mỗi ô nhỏ hơn 2 pixel, lùi vào 1 pixel từ mỗi cạnh, sẽ tạo ra một khe hẹp giữa các ô liền kề để bạn nhìn thấy các đốt của rắn.
def draw_cell(cell, color):
col, row = cell
pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))col, row = cell giải nén tuple thành hai biến. Giữ các số trong những hằng số như CELL, COLS và ROWS: tên trong code cho biết chúng có ý nghĩa gì, và thay đổi một hằng số sẽ làm thay đổi toàn bộ trò chơi.
Thử thách
DễVẽ đầu rắn trên một lưới ô.
- Phía trên vòng lặp, viết
draw_cell(cell, color), hàm này vẽ một ô cách mỗi cạnh 1 pixel như trên. - Đặt
head = (5, 9). - Sau lệnh tô màu, vẽ đầu rắn bằng
draw_cell(head, (180, 255, 160)).
Nhấn “Chơi”: một ô màu xanh lá nằm ở bên trái của hàng 9. 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()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((30, 30, 46))
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