Pygame - Tạo Sprite

Category: Pygame

Sprite là các đối tượng có các thuộc tính khác nhau như chiều cao, chiều rộng, màu sắc, v.v. và các phương thức như di chuyển sang phải, sang trái, lên xuống, nhảy, v.v. Trong bài viết này, chúng ta sẽ tìm cách tạo ra một đối tượng mà người dùng có thể điều khiển đối tượng đó và di chuyển nó về phía trước, phía sau, lên và xuống bằng các phím mũi tên.

Trước tiên, hãy xem xét lớp đầu tiên của chúng ta, tức là lớp mà sprite được định nghĩa, chúng ta sẽ gọi lớp đó là Sprite. Lớp Sprite này định nghĩa vị trí của nó (tọa độ x và y), kích thước của đối tượng, màu sắc, v.v. Trước tiên, chúng ta sẽ gọi phương thức init() . Nó được gọi là hàm tạo cho một lớp.

Ví dụ: Tạo lớp Sprite

import pygame

# BIẾN TOÀN CẦU
COLOR = (255, 100, 98)
SURFACE_COLOR = (167, 255, 100)
WIDTH = 500
HEIGHT = 500

# Lớp đối tượng
class Sprite(pygame.sprite.Sprite):
    def __init__(self, color, height, width):
        super().__init__()

        self.image = pygame.Surface([width, height])
        self.image.fill(SURFACE_COLOR)
        self.image.set_colorkey(COLOR)

        pygame.draw.rect(self.image,
                         color,
                         pygame.Rect(0, 0, width, height))

        self.rect = self.image.get_rect()

Bây giờ, khi lớp đã được tạo, chúng ta có thể tạo các đối tượng từ lớp đó. Nó cho phép chúng ta tạo bao nhiêu đối tượng tùy thích bằng cùng một lớp. Bây giờ, chúng ta sẽ tạo một đối tượng bằng Class Sprite. 

Cú pháp:

object = Sprite(RED,WIDTH,HEIGHT)

Theo mặc định, đối tượng sẽ ở vị trí (0,0), tức là góc trên bên trái màn hình. Chúng ta có thể thay đổi thuộc tính x và y của đối tượng.

Cú pháp:

object.rect.x = value


object.rect.y = value

Chúng ta có thể định nghĩa n sprite mà chúng ta muốn tạo, nhưng để dễ hiểu, hãy đơn giản hóa. Ở đây, chúng ta đã tạo một sprite hình chữ nhật có kích thước nhất định, trên đó chúng ta có thể thực hiện các thao tác khác nhau trên sprite như di chuyển về phía trước, lùi lại, nhảy, làm chậm, tăng tốc, v.v. 

Ví dụ: Tạo sprite

import pygame
import random

# BIẾN TOÀN CẦU
COLOR = (255, 100, 98)
SURFACE_COLOR = (167, 255, 100)
WIDTH = 500
HEIGHT = 500

# Lớp đối tượng
class Sprite(pygame.sprite.Sprite):
    def __init__(self, color, height, width):
        super().__init__()

        self.image = pygame.Surface([width, height])
        self.image.fill(SURFACE_COLOR)
        self.image.set_colorkey(COLOR)

        pygame.draw.rect(self.image,color,pygame.Rect(0, 0, width, height))

        self.rect = self.image.get_rect()


pygame.init()

RED = (255, 0, 0)

size = (WIDTH, HEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Creating Sprite")

all_sprites_list = pygame.sprite.Group()

object_ = Sprite(RED, 20, 30)
object_.rect.x = 200
object_.rect.y = 300

all_sprites_list.add(object_)

exit = True
clock = pygame.time.Clock()

while exit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit = False

    all_sprites_list.update()
    screen.fill(SURFACE_COLOR)
    all_sprites_list.draw(screen)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Đầu ra:

Published on Jul 28, 2025

Related Posts