Thu phóng 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 8 trên 39.
Trùm trong màn chơi cần trông thật lớn, còn bộ đếm mạng cần những con tàu nhỏ. Cùng một tệp có thể làm được cả hai việc: phóng to hoặc thu nhỏ sẽ tạo ra một bản sao với kích thước đã thay đổi.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) nhân cả hai chiều với 2: con trùm kích thước 64 x 64 sẽ thành 128 x 128. scale(image, (w, h)) tạo ảnh có kích thước chính xác là w x h pixel, kể cả khi ảnh bị kéo giãn.
Thao tác thay đổi kích thước chậm hơn blit, và mỗi bản sao mới lại làm các pixel mờ hoặc vỡ nét thêm một chút. Chỉ thay đổi kích thước một lần, trước vòng lặp, từ tệp gốc, rồi vẽ bản sao đã thay đổi kích thước ở mỗi khung hình.
Hãy tạo Rect sau khi thay đổi kích thước. Rect tạo từ ảnh kích thước 64 x 64 sẽ giữ kích thước cũ, còn center=(320, 150) sẽ đặt con trùm lớn lệch khỏi tâm.
Thử thách
DễVẽ một trùm lớn và ba biểu tượng tàu nhỏ.
- Trước vòng lặp, phóng to trùm lên 2 lần, rồi tạo
boss_recttừ hình ảnh đã phóng to, căn giữa tại(320, 150). - Tạo
icon: tàu được thu nhỏ thành(32, 32). - Vẽ
iconvới góc trên bên trái tại(10, 10),(50, 10)và(90, 10).
Nhấn “Chơi”: một trùm lớn và ba tàu nhỏ ở góc trên bên trá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("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
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(boss, boss_rect)
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