Menu
CoddyTech

Lưới ô vuông

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

Rắn di chuyển trên một lưới. Cửa sổ có 24 cột và 18 hàng ô, mỗi ô rộng 20 pixel, và rắn di chuyển từng ô một.

Làm việc với các ô, 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 khoảng hở nhỏ 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: code cho biết ý nghĩa của chúng, và thay đổi một hằng số sẽ làm thay đổi toàn bộ trò chơi.

challenge icon

Thử thách

Dễ

Vẽ đầu con rắn trên lưới ô.

  1. 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.
  2. Đặt head = (5, 9).
  3. Sau lệnh tô màu, vẽ đầu bằng draw_cell(head, (180, 255, 160)).

Nhấn Chơi: một ô màu xanh lá nằm bên trái 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 Dự án

Tự luyện tập: Playground Pygame