Lớp đầu tiên của bạn
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 10 trên 39.
Ngôi sao gồm ba biến: star_x, star_y và star_speed. Cách này ổn với một ngôi sao, nhưng bầu trời đầy sao cần một cách tốt hơn để nhóm các con số của từng ngôi sao lại với nhau.
Một lớp là bản thiết kế cho một loại đối tượng. Mỗi đối tượng được tạo từ lớp đó có các giá trị riêng, gọi là thuộc tính:
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
star = Star(320, 0)Star(320, 0) tạo một đối tượng Star mới. Sau đó, Python chạy __init__ trên đối tượng đó, hàm bên trong lớp dùng để thiết lập từng đối tượng mới (Python tìm tên này, có hai dấu gạch dưới ở mỗi bên), với x = 320 và y = 0. Bên trong hàm, self là đối tượng mới, nên self.x = x lưu giá trị 320 vào đối tượng đó. Bên ngoài lớp, bạn truy cập cùng giá trị bằng star.x và thay đổi theo cách tương tự: star.y += star.speed.
Tên lớp bắt đầu bằng chữ in hoa: Star là bản thiết kế, còn star là một ngôi sao được tạo từ bản thiết kế đó.
Thử thách
DễLưu các giá trị của ngôi sao trong một đối tượng.
- Viết một lớp
Starcó__init__(self, x, y)lưuself.x,self.yvàself.speed = 2. - Thay ba biến bằng
star = Star(320, 0). - Trong vòng lặp, dùng
star.x,star.yvàstar.speedở những chỗ có các biến cũ.
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()
star_x = 320
star_y = 0
star_speed = 2
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