Đặt ảnh bằng Rect
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 2 trên 39.
Tự tính góc trên bên trái bằng tay nghĩa là phải cộng lại cho từng hình ảnh bạn đặt. Mỗi Surface có thể tạo một Rect theo kích thước của nó:
ship_rect = ship.get_rect(center=(320, 400))Chỉ dùng get_rect() sẽ cho kết quả Rect(0, 0, 64, 64). Một từ khóa sẽ định vị Rect: center, midbottom, topleft hoặc bất kỳ điểm nào khác mà Rect có. Ở đây, tâm của con tàu nằm tại (320, 400) và pygame tính ra góc, (288, 368).
Blit hình ảnh tại Rect để hình ảnh nằm ở góc trên bên trái của Rect:
screen.blit(ship, ship_rect)Giờ đây Rect là vị trí của con tàu. Thay đổi ship_rect.x hoặc ship_rect.centery để khung hình tiếp theo vẽ con tàu tại đó. Đây là cách mọi hình ảnh trong game di chuyển: giữ một Rect, thay đổi Rect rồi blit tại Rect. Bạn cũng dùng Rect này để kiểm tra va chạm, như trong phần 2.
Thử thách
DễĐặt tàu bằng Rect.
- Sau khi tải
ship, tạoship_rect = ship.get_rect(center=(320, 400)). - Blit
shiptạiship_rectthay vì tại một điểm cố định.
Nhấn Chơi: tàu nằm gần phía dưới. 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()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ship, (288, 208))
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