Cách quản lý điểm số trong game bằng thư viện Arcade của Python

Điểm số là một phần quan trọng mà mọi trò chơi điện tử đều cần có, bởi chúng cung cấp thước đo sự tiến bộ và thành tựu cho người chơi.

Quản lý điểm số trong game

Trong Python, thư viện Arcade cung cấp cách đơn giản nhưng hiệu quả để quản lý điểm số chơi game. Một khi quản lý điểm số hiệu quả, bạn có thể thu hút được nhiều người dùng, đồng thời cung cấp một trải nghiệm chơi game hấp dẫn hơ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 thư viện arcade:

pip install arcade

Giờ tạo một 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 bằng các phím mũi tên, trong khi vật cản được đặt ở cùng trục y.

import arcade

# Thiết lập kích thước cửa sổ
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        self.player_x = width // 3
        self.score = 0

    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 update(self, delta_time):
        # Update logic game tại đây
        pass

    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x, 50, 20, arcade.color.BLUE)
        arcade.draw_rectangle_filled(400, 50, 100, 50, arcade.color.RED)

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

if __name__ == "__main__":
    main()

Theo dõi và tính toán điểm số

Để theo dõi điểm số trong game, bạn có thể tạo một cơ chế để tăng điểm số bất cứ khi nào một điều kiện được đáp ứng. Ví dụ, điểm số tăng khi người chơi di chuyển trong game và thành công chạm vào vật cản. Bạn có thể thay đổi phương thức update để bao gồm logic tính điểm số:

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        self.player_x = width // 3
        self.score = 0

    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 update(self, delta_time):
        if self.player_x > 330 and self.player_x < 470:
            self.score += 1

Hiện điểm số

Để hiện điểm số trước người chơi, chỉnh sửa on_draw để bao gồm một thông báo văn bản:

    # ...

    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x, 50, 20, arcade.color.BLUE)
        arcade.draw_rectangle_filled(400, 300, 100, 50, arcade.color.RED)

        score_text = f"Score: {self.score}"
        arcade.draw_text(score_text, 10, 10, arcade.color.WHITE, 14)

Bằng cách thêm code trên, bạn có thể hiện điểm số ở góc bên trái phía dưới cùng của cửa sổ game.

Lưu điểm số cao

Để mang tới cảm giác chinh phục thành tựu và cạnh tranh cho người chơi, bạn cần lưu trữ và hiện điểm số cao. Bạn có thể dùng một phương pháp dựa trên file đơn giản.

Dùng load_high_score để đọc điểm số cao từ một file tên high_score.txt và trả về nó. Sau đó, bạn có thể lưu điểm số cao mới cho file bằng phương thức save_high_score.

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        self.player_x = width // 3
        self.score = 0
        self.high_score = self.load_high_score()

    def load_high_score(self):
        try:
            with open("high_score.txt", "r") as file:
                return int(file.read())
        except FileNotFoundError:
            return 0

    def save_high_score(self):
        with open("high_score.txt", "w") as file:
            file.write(str(self.high_score))

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

        if self.score > self.high_score:
            self.high_score = self.score
            self.save_high_score()

Hiển thị điểm số cao

Tương tự như hiện điểm số hiện tại, bạn có thể thêm kết xuất văn bản để hiện điểm số cao:

class MyGame(arcade.Window):
    # ...

    def on_draw(self):
        # ...

        high_score_text = f"High Score: {self.high_score}"
        arcade.draw_text(high_score_text, 10, 30, arcade.color.WHITE, 14)

Bằng cách bao gồm code trên trong hàm on_draw, bạn có thể hiện điểm số cao chỉ trên điểm số hiện tại.

Quản lý điểm số trong game tạo bằng Python không khó

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

Quản lý điểm số trong game thường liên quan tới việc kết hợp các tính năng bổ sung để làm gameplay hấp dẫn và năng động hơn. Giờ hãy khám phá một số ví dụ về cách bạn có thể giới thiệu các tính năng bổ sung bên cạnh quản lý điểm số trong game.

Power-Ups

Power-up là các vật phẩm đặc biệt, mang lại cho người chơi những lợi thế tạm thời hoặc điểm thưởng. Tạo phương thức activate_power_up để kích hoạt power-up, cài đặt flag activate_power_up sang True.

Bạn có thể lên lịch deactivate_power_up để chạy sau một khoảng thời gian nhất định (ví dụ: sau mỗi 10 giây) dùng hàm arcade.schedule. Trong suốt giai đoạn hoạt động của power-up, bạn có thể dùng apply_power_up_effects để triển khai các cải tiến gameplay cụ thể.

Đây là ví dụ về cách chạy tính năng power-up trong game.

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        self.player_x = width // 3
        self.score = 0
        self.power_up_active = False

    def update(self, delta_time):
        if self.power_up_active:
            # Áp dụng hiệu ứng power-up trong gameplay
            self.apply_power_up_effects()
            self.score += 10

    def apply_power_up_effects(self):
        # Thêm logic cụ thể cho power-up specific tại đây
        pass

    def activate_power_up(self):
        self.power_up_active = True
        # Đặt hẹn giờ hoặc thời lượng chạy hiệu ứng power-up 
        arcade.schedule(self.deactivate_power_up, 10.0)

    def deactivate_power_up(self, delta_time):
        self.power_up_active = False

Hệ thống combo

Hệ thống combo trao thưởng cho người chơi đạt được những hành động thành công liên tiếp hoặc ghi nhiều điểm cao. Tạo increase_combo_counter tăng bộ đếm combo và điểm số dựa trên cấp combo hiện tại.

Bạn có thể gọi phương thức reset_combo_counter và reset bộ đếm combo trở về 0 bất cứ khi nào một hành động không thành công. Đây là một triển khai đơn giản của hệ thống combo:

class MyGame(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        self.player_x = width // 3
        self.score = 0
        self.combo_counter = 0

    def update(self, delta_time):
        # Check for successful actions
        if self.check_successful_action():
            self.increase_combo_counter()
        else:
            self.reset_combo_counter()

    def increase_combo_counter(self):
        self.combo_counter += 1
        self.score += self.combo_counter

    def reset_combo_counter(self):
        self.combo_counter = 0

Bằng cách kết hợp các tính năng bổ sung như power-up và hệ thống combo, bạn có thể thêm chiều sâu và độ thú vị cho game, cung cấp cho người chơi thêm động lực để cải thiện năng suất, chiến thuật hành động và ghi điểm số cao.

Trên đây là cách quản lý điểm số trong game bằng thư viện Arcade của Python. Hi vọng bài viết hữu ích với các bạn.

Thứ Năm, 15/06/2023 16:32
51 👨 152
0 Bình luận
Sắp xếp theo
    ❖ Python