Tải hình ảnh
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 1 trên 39.
Trò chơi vẽ hình ảnh, không chỉ các hình khối. Hình ảnh lấy từ một tệp ảnh, còn pygame chuyển tệp đó thành một Surface, cùng loại đối tượng với cửa sổ: một lưới pixel để bạn vẽ lên.
ship = pygame.image.load("assets/images/ship.png").convert_alpha()Đường dẫn tính từ main.py: trò chơi có thư mục assets nằm cạnh tệp này, còn thẻ Assets bên cạnh trò chơi liệt kê mọi tệp trong thư mục đó.
convert_alpha() sao chép hình ảnh sang định dạng pixel riêng của cửa sổ, nhờ đó việc vẽ ảnh ở mỗi khung hình sẽ nhanh và giữ nguyên các pixel trong suốt. Hàm này cần cửa sổ, vì vậy hãy tải hình ảnh sau set_mode. Tải mỗi hình ảnh một lần, trước vòng lặp: đọc tệp 60 lần mỗi giây sẽ làm trò chơi chậm đi.
Để vẽ hình ảnh, hãy blit nó lên cửa sổ. Vị trí xác định góc trên bên trái của ảnh:
screen.blit(ship, (288, 208))Gọi blit sau screen.fill(...), nếu không, phần tô nền sẽ phủ lên hình ảnh.
Thử thách
DễHiển thị hình ảnh con tàu ở giữa cửa sổ.
- Sau
set_mode, tảiassets/images/ship.pngbằng.convert_alpha()vào một biến có tênship. - Trong vòng lặp, sau khi tô màu nền, dùng blit để vẽ
shipvới góc trên bên trái tại(288, 208).
Nhấn Chơi: con tàu kích thước 64 x 64 nằm ở giữa. Sau đó nhấn Kiểm tra.
Tự làm thử
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Space Images")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tất cả bài học trong Sprite và hình ảnh
5Va chạm chính xác đến từng pixel
Hình chữ nhật thật bất côngMặt nạSprite chính xác đến từng pixelVùng va chạm hình tròn3Lớp cho đối tượng trong trò chơi
Lớp đầu tiên của bạnPhương thứcSelf là đối tượngDanh sách đối tượngĐối tượng có hình ảnhDanh sách kẻ địchLớp con6Hoạt ảnh từ sprite sheet
Cắt sprite sheetBộ đếm khung hìnhTạo hoạt ảnh theo thời gianHiệu ứng nổ chỉ chạy một lầnTự luyện tập: Playground Pygame