Cách dùng sprite trong Arcade để phát triển game

Nhiều game dùng sprite để đại diện cho nhân vật người chơi hoặc kẻ thù. Hãy cùng Quantrimang.com tìm hiểu cách thư viện Arcade của Python khiến việc dùng sprite để phát triển game đơn giản như thế nào nhé!

Arcade trong Python

Thư viện Arcade của Python cung cấp một cách trực quan và liền mạch để kết hợp các sprite vào dự án phát triển game của bạn. Sprite là các phần tử thiết yếu, mang tới sự hấp dẫn về mặt hình ảnh, tính tương tác và di chuyển sống động cho game của bạn.

Với tính năng mạnh mẽ và cú pháp đơn giản của Arcade, thêm sprite trở nên dễ dàng. Thư viện này cho phép bạn nhanh chóng cải thiện game bằng những đối tượng và nhân vật hấp dẫn.

Tạo game đơn giản

Trước khi bắt đầu, đảm bảo bạn đã cài pip trên thiết bị. Dùng lệnh này để cài đặt thư viện arcade:

pip install arcade

Bắt đầu từ việc tạo game đơn giản bằng thư viện Arcade của Python. Trong game này, người chơi có thể di chuyển sang trái và phải.

Tạo class MyGame kế thừa từ arcade.Window. Sau đó, xác định phương thức thiết lập để khởi tạo biến và on_draw để vẽ đối tượng game. Phương thức on_key_press cho phép người chơi di chuyển hình chữ nhật màu xanh dương sang trái hoặc phải.

Đây là code cho game cơ bản của bạn:

import arcade

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
    
    def setup(self):
        self.player_x = 320
    
    def on_draw(self):
        arcade.start_render()
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)
    
    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_x -= 10
        elif key == arcade.key.RIGHT:
            self.player_x += 10

def main():
    game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
    game.setup()
    arcade.run()

if __name__ == "__main__":
    main()

Cách thêm sprite vào game

Giờ bạn đã có một game đơn giản đang hoạt động, giờ là lúc cải tiến nó bằng cách thêm một số sprite. Bạn có thể tạo sprite bằng class arcade.Sprite. Bạn có thể tải ảnh để đại diện cho sprite và dùng chúng trong game.

Tải file ảnh tên player.png để tạo sprite người chơi. Đặt vị trí ban đầu của sprite ở giữa màn hình. Trong phương thức on_draw, vẽ sprite người chơi bằng hàm draw.

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_sprite = None
    
    def setup(self):
        self.player_sprite = arcade.Sprite("player.png")
        self.player_sprite.center_x = SCREEN_WIDTH // 2
        self.player_sprite.center_y = SCREEN_HEIGHT // 2
    
    def on_draw(self):
        arcade.start_render()
        self.player_sprite.draw()
    
    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_sprite.change_x = -5
        elif key == arcade.key.RIGHT:
            self.player_sprite.change_x = 5

    def update(self, delta_time):
        self.player_sprite.update()

Bổ sung đặc điểm cho sprite

Sprite trong Arcade còn cung cấp nhiều tính năng khác, ngoài những chuyển động cơ bản. Ví dụ, bạn có thể chỉnh lại kích thước một sprite bằng cách thiết lập thuộc tính scale.

Bạn có thể đặt thuộc tính scale của sprite người chơi sang 0.5, để làm cho nó bằng một nửa kích thước ban đầu.

class MyGame(arcade.Window):
    def setup(self):
        self.player_sprite = arcade.Sprite("player.png", scale=0.5)

Kiểm soát chuyển động sprite

Sprite trong Arcade cung cấp các cách khác nhau để kiểm soát chuyển động của người chơi. Bên cạnh thuộc tính change_x, bạn có thể dùng change_y để kiểm soát chuyển động thẳng đứng. Đối với những kiểu chuyển động phức tạp hơn, bạn cũng có thể dùng thuộc tính change_angle để xoay sprite.

self.player_sprite.change_angle = ROTATION_SPEED

Bằng cách kết hợp những thuộc tính này với bàn phím hoặc chuột, bạn có thể tạo các điều khiển chuyển động linh họat và nhạy bén cho sprite trong game.

Thêm phát hiện va chạm với sprite

Phát hiện va chạm quan trọng trong nhiều game. Với Arcade, bạn có thể dễ dàng phát hiện va chạm giữa các sprite bằng hàm arcade.check_for_collision. Hãy chỉnh sửa code này để bao gồm phát hiện va chạm giữa sprite người chơi và sprite khác tên obstacle.png:

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_sprite = None
    
    def setup(self):
        self.player_sprite = arcade.Sprite("player.png", scale=0.1)
        self.obstacle_sprite = arcade.Sprite("obstacle.png", scale = 0.1)
        self.obstacle_sprite.center_x = SCREEN_WIDTH 
        self.obstacle_sprite.center_y = SCREEN_HEIGHT // 2
        self.player_sprite.center_x = SCREEN_WIDTH // 2
        self.player_sprite.center_y = SCREEN_HEIGHT // 2
    
    def on_draw(self):
        arcade.start_render()
        self.player_sprite.draw()
        self.obstacle_sprite.draw()
    
    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_sprite.change_x = -5
        elif key == arcade.key.RIGHT:
            self.player_sprite.change_x = 5
    
    def update(self, delta_time):
        self.player_sprite.update()
        self.obstacle_sprite.update()

        if arcade.check_for_collision(self.player_sprite, self.obstacle_sprite):
            print("Collision detected!")

Sprite làm nhân vật, đối tượng và hoạt ảnh trong game trông chân thực và thú vị. Chúng có thể di chuyển, tương tác với những nhân tố khác trong game theo nhiều cách nên mang tới cảm giác thú vị và sinh động hơn cho người chơi.

Hi vọng bài viết hữu ích với các bạn!

Thứ Bảy, 27/05/2023 09:27
51 👨 132
0 Bình luận
Sắp xếp theo