Phương thức
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 11 trên 39.
Các con số của ngôi sao giờ nằm trong lớp, nhưng các quy tắc về chúng, cách ngôi sao rơi xuống và cách vẽ nó, vẫn nằm trong vòng lặp. Các hàm được viết bên trong một lớp là phương thức, chúng đặt các quy tắc bên cạnh dữ liệu:
class Star:
# __init__ như trước
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)Tham số đầu tiên của mỗi phương thức là self, đối tượng mà phương thức thao tác. Bạn gọi phương thức trên một đối tượng bằng dấu chấm, còn Surface của pygame được truyền vào như mọi đối số khác:
star.update()
star.draw(screen)Giờ đây, vòng lặp chính mô tả những gì xảy ra trong một khung hình: cập nhật ngôi sao, rồi vẽ nó. Các đối tượng trò chơi trong chương trình pygame hầu như luôn có hai phương thức này, update và draw.
Thử thách
Trung bìnhHãy thêm các phương thức cập nhật và vẽ riêng cho ngôi sao.
- Thêm
update(self)vàoStar: cộngself.speedvàoself.yvà đưa ngôi sao vềy = 0khiself.ylớn hơn 480. - Thêm
draw(self, screen): vẽ hình tròn màu trắng, bán kính 4, tại(self.x, self.y). - Trong vòng lặp, gọi
star.update()và gọistar.draw(screen)sau khi tô nền.
Nhấn Chơi: ngôi sao rơi như trước. 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("Falling Star")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
star = Star(320, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star.y += star.speed
if star.y > 480:
star.y = 0
screen.fill((20, 22, 40))
pygame.draw.circle(screen, (255, 255, 255), (star.x, star.y), 4)
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