Tàu tuần tra
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 30 trên 39.
Đã đến lúc xây dựng một trò chơi hoàn chỉnh: Star Patrol. Các đợt tàu địch bay xuống từ phía trên. Tàu của bạn tuần tra ở cuối cửa sổ, di chuyển sang trái và phải, đồng thời bắn tia laser lên trên. Phá hủy mọi đợt tàu để chiến thắng; để ba kẻ địch lọt qua hoặc đâm vào chúng thì trò chơi kết thúc.
Mọi đối tượng trong trò chơi đều là sprite: người chơi, tia laser của người chơi, kẻ địch và vụ nổ của chúng. Hãy bắt đầu với người chơi, như trong chương 4:
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))Tải ship_image một lần sau khi tạo cửa sổ. update của nó di chuyển Rect bằng các phím mũi tên và giữ cho nó nằm trong cửa sổ. Vòng lặp chính gọi player.update() và vẽ con tàu.
Chương này mở rộng cùng một chương trình qua từng bài học, vì vậy hãy giữ nguyên các tên mà nhiệm vụ đưa ra: các bước kiểm tra tìm những phần của trò chơi bằng các tên đó.
Thử thách
Trung bìnhBắt đầu Star Patrol với con tàu của người chơi.
- Tải
assets/images/ship.pngvàoship_image. - Viết
class Player(pygame.sprite.Sprite): dùng ảnhship_image, đặt Rect sao cho chính giữa cạnh dưới ở vị trí(320, 470), và viếtupdateđể di chuyển tàu 6 pixel mỗi khung hình bằng phím mũi tên trái và phải, đồng thời giữ tàu trong cửa sổ. - Tạo
player = Player(), gọiplayer.update()và blit tàu ở mỗi khung hình.
Nhấn Chơi rồi giữ các phím mũi tên: con tàu tuần tra ở cạnh 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("Star Patrol")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((12, 14, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tất cả bài học trong Sprite và hình ảnh
7Tuần tra giữa các vì sao
Tàu tuần traBắn laser5Va 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