/ / Cách triển khai các cấp trò chơi trong Arcade của Python

Cách triển khai các cấp trò chơi trong Arcade của Python

Phát triển trò chơi là một quá trình thú vị và sáng tạo cho phép bạn biến những ý tưởng tưởng tượng của mình thành hiện thực. Khi thiết kế một trò chơi, một trong những yếu tố quan trọng có thể nâng cao đáng kể trải nghiệm của người chơi là việc thực hiện các cấp độ trò chơi.



Các cấp độ cung cấp cấu trúc, tiến trình và thử thách, mang lại cho người chơi cảm giác đạt được thành tích và gắn kết khi họ điều hướng qua các giai đoạn khác nhau của trò chơi.



Tạo một trò chơi đơn giản

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt pip trên thiết bị của mình. Sử dụng lệnh này để cài đặt giải trí thư viện:

 pip install arcade 

Tạo một trò chơi cơ bản trong đó người chơi có thể di chuyển sang trái và phải.

Mã được sử dụng trong bài viết này có sẵn trong kho lưu trữ GitHub này và bạn được sử dụng miễn phí theo giấy phép MIT.

Tận dụng khả năng của thư viện Arcade để xử lý đầu vào của người dùng và cập nhật trạng thái trò chơi tương ứng. Tạo một tệp mới có tên đơn giản-game.py và thêm đoạn mã dưới đây:

 import arcade

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = SCREEN_WIDTH // 2

    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 on_key_release(self, key, modifiers):
        if key == arcade.key.LEFT or key == arcade.key.RIGHT:
            pass

def main():
    game = MyGame()
    arcade.run()

if __name__ == "__main__":
    main()

Dưới đây là đầu ra:

trò chơi arcade đơn giản với đối tượng người chơi

Tạo nhiều cấp độ

Bây giờ, hãy mở rộng trò chơi bằng cách thêm nhiều cấp độ. Mỗi cấp độ sẽ có những đặc điểm riêng, mang đến những thử thách khác nhau cho người chơi. Bạn có thể sửa đổi mã trước đó để bao gồm các cấp độ bổ sung. Đây là một ví dụ:

 class LevelOne:
    def __init__(self):
        self.player_x = SCREEN_WIDTH // 2

    def update(self):
        pass

    def draw(self):
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)

class LevelTwo:
    def __init__(self):
        self.player_x = SCREEN_WIDTH // 2

    def update(self):
        pass

    def draw(self):
        arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.RED)

class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        arcade.set_background_color(arcade.color.WHITE)
        self.levels = [LevelOne(), LevelTwo()]
        self.current_level = 0

    def on_draw(self):
        arcade.start_render()
        self.levels[self.current_level].draw()

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.levels[self.current_level].player_x -= 10
        elif key == arcade.key.RIGHT:
            self.levels[self.current_level].player_x += 10

    def on_key_release(self, key, modifiers):
        if key == arcade.key.LEFT or key == arcade.key.RIGHT:
            pass

    def update(self, delta_time):
        self.levels[self.current_level].update()

def main():
    game = MyGame()
    arcade.run()

if __name__ == "__main__":
    main()

Chuyển đổi giữa các cấp độ

Để tạo sự chuyển tiếp suôn sẻ giữa các cấp, hãy phát hiện khi người chơi vượt qua một ranh giới cụ thể. Bạn có thể theo dõi chuyển động của người chơi và khi người chơi vượt qua ranh giới, bạn có thể chuyển sang cấp độ tiếp theo. Tạo một tệp mới có tên transition-between-levels.py và thêm mã với các bản cập nhật bên dưới:

 class MyGame(arcade.Window):
    

    def update(self, delta_time):
        self.levels[self.current_level].update()

        
        if self.levels[self.current_level].player_x < 0:
            self.current_level += 1
            self.current_level %= len(self.levels)
            self.levels[self.current_level].player_x = SCREEN_WIDTH
        elif self.levels[self.current_level].player_x > SCREEN_WIDTH:
            self.current_level += 1
            self.current_level %= len(self.levels)
            self.levels[self.current_level].player_x = 0

    

Dưới đây là đầu ra:

người chơi chuyển đổi giữa các cấp

Bao gồm các tính năng bổ sung

Để làm cho các cấp độ trò chơi của bạn hấp dẫn hơn, bạn có thể kết hợp các tính năng bổ sung như tăng sức mạnh và mục tiêu.

mục tiêu

Mục tiêu cung cấp các mục tiêu hoặc mục tiêu cụ thể để người chơi hoàn thành trong một cấp độ. Họ thêm một cảm giác về mục đích và tiến bộ. Đây là một ví dụ về việc triển khai một tính năng khách quan:

 class Objective:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 20

    def draw(self):
        arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.GREEN)

class LevelOne:
    def __init__(self):
        self.objective = Objective(600, 400)
        

    def update(self):
        
        if arcade.check_for_collision(self.player, self.objective):
            self.complete_objective()

    def draw(self):
        self.objective.draw()
        

    def complete_objective(self):
        
        pass

sưu tầm

Sưu tầm là những vật phẩm hoặc tiền thưởng mà người chơi có thể thu thập trong suốt các màn chơi. Đây là một ví dụ về việc triển khai tính năng sưu tập:

 class Collectible:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 10
        self.is_collected = False

    def draw(self):
        if not self.is_collected:
            arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.ORANGE)

    def collect(self):
        self.is_collected = True
        

class LevelOne:
    def __init__(self):
        self.collectible = Collectible(300, 300)
        

    def update(self):
        
        if arcade.check_for_collision(self.player, self.collectible):
            self.collectible.collect()

    def draw(self):
        self.collectible.draw()
        

chướng ngại vật

Chướng ngại vật có thể là các vật thể tĩnh hoặc các thực thể chuyển động cản trở đường đi của người chơi. Chúng yêu cầu người chơi phải lên chiến lược và tìm cách vượt qua chúng. Đây là một ví dụ về việc triển khai tính năng chướng ngại vật:

 class Obstacle:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height

    def draw(self):
        arcade.draw_rectangle_filled(self.x, self.y, self.width, self.height, arcade.color.GRAY)

class LevelOne:
    def __init__(self):
        self.obstacles = [Obstacle(400, 200, 100, 50), Obstacle(600, 500, 80, 120)]
        

tăng sức mạnh

Tăng sức mạnh có thể nâng cao khả năng của người chơi hoặc mang lại lợi thế tạm thời. Đây là một ví dụ về việc triển khai tính năng tăng sức mạnh:

 class PowerUp:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.radius = 10
        self.is_active = True

    def draw(self):
        if self.is_active:
            arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.YELLOW)

    def activate_power_up(self):
        self.is_active = True

    def deactivate_power_up(self):
        self.is_active = False

class LevelOne:
    def __init__(self):
        self.power_up = PowerUp(200, 200)
        

    def update(self):
        
        if arcade.check_for_collision(self.player, self.power_up):
            self.player.activate_power_up()
            self.power_up.deactivate_power_up()

    def draw(self):
        self.power_up.draw()
        

Thực tiễn tốt nhất cho thiết kế cấp độ

Thiết kế cấp độ đóng một vai trò quan trọng trong việc tạo ra trải nghiệm chơi trò chơi hấp dẫn và thú vị. Dưới đây là một số phương pháp hay nhất cần cân nhắc khi thiết kế cấp độ cho trò chơi của bạn:

Mục tiêu rõ ràng

Mỗi cấp độ nên có một mục tiêu hoặc mục tiêu rõ ràng để người chơi đạt được. Cho dù đó là đến một địa điểm cụ thể, đánh bại kẻ thù hay giải câu đố, thì mục tiêu đó phải được xác định rõ ràng và thông báo cho người chơi.

Đường cong độ khó tăng dần

Thiết kế các cấp độ với độ khó tăng dần để mang lại quá trình học tập suôn sẻ cho người chơi. Bắt đầu với những thử thách đơn giản hơn và dần dần giới thiệu các cơ chế hoặc chướng ngại vật mới khi người chơi tiến bộ. Độ khó tăng đột ngột có thể khiến người chơi nản lòng, vì vậy điều quan trọng là phải duy trì tiến trình cân bằng.

Hình ảnh rõ nét

Đảm bảo rằng thiết kế cấp độ và các yếu tố hình ảnh truyền đạt rõ ràng thông tin quan trọng cho người chơi. Kết hợp âm nhạc và hiệu ứng âm thanh cũng có thể truyền đạt những manh mối quan trọng và cung cấp thông tin cần thiết cho người chơi.

Chơi thử và lặp lại

Chơi thử thường xuyên là điều cần thiết để tinh chỉnh và cải thiện thiết kế cấp độ. Thu thập phản hồi từ người chơi và quan sát trải nghiệm của họ để xác định các khu vực có thể cần điều chỉnh. Lặp lại thiết kế cấp độ của bạn dựa trên phản hồi này để tạo ra lối chơi cân bằng và thú vị hơn.

Cân bằng phần thưởng và thử thách

Thưởng cho người chơi khi vượt qua các thử thách trong cấp độ của bạn. Điều này có thể đạt được thông qua tăng sức mạnh, sưu tầm, mở khóa các khu vực mới hoặc diễn biến câu chuyện. Cân bằng độ khó của các thử thách với các phần thưởng có ý nghĩa sẽ giúp thúc đẩy người chơi và mang lại cảm giác hoàn thành.

Làm cho trò chơi hấp dẫn hơn với các cấp độ

Bằng cách triển khai các cấp trò chơi, bạn có thể nâng cao trải nghiệm tổng thể của người chơi và tạo môi trường chơi trò chơi hấp dẫn hơn. Các cấp độ cung cấp sự tiến bộ, thử thách và sự đa dạng, giúp người chơi luôn đầu tư và có động lực. Chúng cho phép bạn giới thiệu cơ chế, chướng ngại vật, kẻ thù và phần thưởng mới, đảm bảo rằng mỗi cấp độ đều cảm thấy khác biệt và thú vị.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *