/ / Triển khai Hệ thống đối thoại trong Trò chơi điện tử Python

Triển khai Hệ thống đối thoại trong Trò chơi điện tử Python

Nếu trò chơi của bạn có các nhân vật, có lẽ bạn sẽ muốn họ trò chuyện với nhau. Một hệ thống đối thoại cung cấp các cuộc trò chuyện tương tác, diễn biến câu chuyện và phát triển nhân vật. Thư viện Python Arcade giúp dễ dàng tích hợp hệ thống đối thoại vào cơ sở mã hiện có của bạn.


Với hệ thống đối thoại, bạn có thể tạo các cuộc hội thoại giữa người chơi và nhân vật không phải người chơi (NPC). Người chơi có thể chọn câu trả lời hoặc đưa ra quyết định ảnh hưởng đến câu chuyện hoặc kết quả của trò chơi.

Hệ thống này cho phép bạn tạo ra những câu chuyện hấp dẫn và tạo ra các tương tác năng động, mang lại trải nghiệm chơi trò chơi hấp dẫn hơn.


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

Để bắt đầu, hãy tạo một trò chơi đơn giản bằng thư viện Arcade. Đây sẽ là nền tảng để thực hiện hệ thống đối thoạ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ạo một tệp mới có tên đơn giản-game.py và xác định một Trò chơi lớp kế thừa từ arcade.Window. Đặt kích thước màn hình, khởi tạo vị trí trình phát và nền tảng cũng như triển khai chức năng vẽ cơ bản. 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.

Đây là đầu ra:

trò chơi đơn giản với người chơi và nền tảng

Thêm hộp thoại

Bây giờ bạn đã có cấu trúc trò chơi cơ bản, hãy thêm một hộp thoại xuất hiện khi người chơi va chạm với kẻ thù. Bạn có thể tạo một hộp thoại sử dụng các hình đơn giản và hiển thị nó trên màn hình.

thêm một đối thoại_hoạt động cờ đến Trò chơi lớp, cho biết hộp thoại có hiển thị hay không. bên trong on_update phương pháp, hãy kiểm tra va chạm của kẻ thù và nếu được phát hiện, hãy đặt đối thoại_hoạt động ĐẾN ĐÚNG VẬY.

bên trong on_draw phương pháp, gọi draw_dialogue_box phương pháp nếu cuộc đối thoại đang hoạt động. Các draw_dialogue_box phương thức vẽ một hình chữ nhật làm nền của hộp thoại và hiển thị một thông báo văn bản.

Tạo một tệp mới có tên hộp thoại-box.py và thêm mã với các bản cập nhật bên dưới:

 

class Game(arcade.Window):
    def __init__(self):
        

        self.dialogue_active = False

    def on_update(self, delta_time):
        if self.check_enemy_collision():
            self.dialogue_active = True

    def on_draw(self):
        

        if self.dialogue_active:
            self.draw_dialogue_box()

    def check_enemy_collision(self):
        player_radius = 25
        distance_x = abs(self.player_x - self.platform_x)
        distance_y = abs(self.player_y - self.platform_y)
        combined_radius = player_radius + 25

        if distance_x < combined_radius and distance_y < combined_radius:
            return True
        else:
            return False

    def draw_dialogue_box(self):
        text = "Hello, player! How are you?"
        
        arcade.draw_rectangle_filled(SCREEN_WIDTH // 2,
        SCREEN_HEIGHT // 2, 500, 200, white)
        
        arcade.draw_text(text, SCREEN_WIDTH // 2,
        SCREEN_HEIGHT // 2 + 20, black, font_size=16,
        anchor_x="center", anchor_y="center")

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

hộp thoại với văn bản

Hiển thị văn bản đối thoại

Giờ đây, bạn có thể nâng cao hệ thống đối thoại của mình bằng cách hiển thị các tin nhắn văn bản động. Tạo một danh sách các chuỗi hội thoại và lặp lại chúng để mô phỏng một cuộc hội thoại. Mỗi khi hộp thoại xuất hiện, nó sẽ hiển thị một thông báo mới.

 

class Game(arcade.Window):
    def __init__(self):
        

        self.dialogue_active = False
        self.dialogue_messages = [
            "Hello, player! How are you?",
            "Nice weather today, isn't it?",
            "Beware of the enemies lurking ahead!"
        ]
        self.dialogue_index = 0

    def draw_dialogue_box(self):
        
        arcade.draw_rectangle_filled(SCREEN_WIDTH // 2,
        SCREEN_HEIGHT // 2, 500, 200, white)
        
        arcade.draw_text(self.dialogue_messages[self.dialogue_index],
        SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, black, font_size=16,
        anchor_x="center", anchor_y="center")

Giới thiệu ba biến mới: đối thoại_tin nhắn, đối thoại_indexđối thoại_hoạt động. Danh sách đối thoại_tin nhắn chứa các tin nhắn văn bản mà hộp thoại sẽ hiển thị. đối thoại_index theo dõi thông báo hiện tại để hiển thị. Mỗi khi hộp thoại xuất hiện, bạn có thể tăng chỉ số đối thoại để hiển thị thông báo tiếp theo.

Thêm một nút

Để làm cho hệ thống hội thoại tương tác hơn, hãy thêm một nút để thay đổi văn bản hội thoại khi người chơi nhấn. Tạo một tệp mới có tên đa văn bản.py và thêm mã với các bản cập nhật bên dưới:

 

class Game(arcade.Window):
    def __init__(self):
        

        self.dialogue_active = False

        self.dialogue_messages = [
            "Hello, player! How are you?",
            "Nice weather today, isn't it?",
            "Beware of the enemies lurking ahead!"
        ]

        self.dialogue_index = 0

    def on_mouse_press(self, x, y, button, modifiers):
        index = (self.dialogue_index + 1) % len(self.dialogue_messages)

        if self.dialogue_active:
            if button == arcade.MOUSE_BUTTON_LEFT:
                self.dialogue_index = index

    def draw_dialogue_box(self):
        

        arcade.draw_text("Next", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
          black, font_size=16, anchor_x="center", anchor_y="center")

thêm on_mouse_press phương pháp để Trò chơi lớp học. Khi hộp thoại đang hoạt động và bạn nhấn nút chuột trái, phương pháp này sẽ tăng đối thoại_index để hiển thị tin nhắn tiếp theo trong đối thoại_tin nhắn danh sách. Các %len(self.dialogue_messages) đảm bảo rằng chỉ mục bao quanh đến đầu danh sách khi đến cuối danh sách.

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

Để tăng cường hơn nữa hệ thống đối thoại, bạn có thể xem xét thêm các tính năng bổ sung sau:

nhiều lựa chọn

Thay vì một tin nhắn, bạn có thể cung cấp nhiều lựa chọn để người chơi lựa chọn. Điều này cho phép người chơi tác động đến kết quả của cuộc trò chuyện hoặc đưa ra quyết định ảnh hưởng đến tiến trình của trò chơi.

Để thực hiện điều này, bạn có thể sửa đổi draw_dialogue_box để hiển thị danh sách các lựa chọn và xử lý lựa chọn của người chơi tương ứng.

Chân dung nhân vật

Để thêm sự tinh tế về hình ảnh vào hệ thống đối thoại của bạn, bạn có thể kết hợp chân dung nhân vật bên cạnh văn bản. Mỗi nhân vật có thể có một hình ảnh hoặc nhân vật tương ứng đại diện cho họ trong cuộc trò chuyện. Hiển thị chân dung nhân vật có thể giúp người chơi xác định người nói và thêm chiều sâu cho trải nghiệm kể chuyện.

Hoạt hình văn bản

Bạn có thể tạo hiệu ứng động cho văn bản để làm cho nó hấp dẫn hơn về mặt trực quan. Ví dụ: bạn có thể làm cho văn bản xuất hiện dần dần, mỗi lần một ký tự, để mô phỏng việc nhập. Điều này tạo ra cảm giác mong đợi và có thể làm cho cuộc đối thoại trở nên hấp dẫn hơn đối với người chơi.

Hiệu ứng âm thanh

Thêm hiệu ứng âm thanh vào hệ thống đối thoại của bạn có thể nâng cao bầu không khí chung của trò chơi. Chẳng hạn, bạn có thể phát hiệu ứng âm thanh khi hộp thoại xuất hiện hoặc khi người chơi chọn một tùy chọn đối thoại. Những tín hiệu âm thanh này có thể làm cho cuộc trò chuyện trở nên đắm chìm và có tác động hơn.

Thực tiễn tốt nhất cho hệ thống đối thoại

Khi triển khai một hệ thống đối thoại, hãy ghi nhớ các phương pháp hay nhất sau đây:

Xóa giao diện người dùng

Đảm bảo rằng hộp thoại và văn bản rõ ràng và được đặt đúng vị trí trên màn hình. Sử dụng phông chữ, màu sắc và kích thước phù hợp để làm cho văn bản dễ đọc.

Giọng nhân vật nhất quán

Duy trì sự nhất quán trong cách nói của các nhân vật và giọng điệu họ sử dụng trong suốt cuộc đối thoại. Điều này giúp tạo ra các cuộc trò chuyện đáng tin cậy và hấp dẫn.

Mức độ liên quan đến lối chơi

Đảm bảo rằng đoạn hội thoại đóng góp một cách có ý nghĩa vào câu chuyện của trò chơi hoặc cung cấp thông tin liên quan cho người chơi. Tránh các cuộc trò chuyện quá mức hoặc không liên quan có thể làm gián đoạn quá trình chơi trò chơi.

Thử nghiệm và Lặp lại

Chơi thử hệ thống đối thoại của bạn một cách kỹ lưỡng để xác định bất kỳ vấn đề hoặc sự không nhất quán nào. Lặp lại cuộc đối thoại của bạn dựa trên phản hồi của người chơi để cải thiện chất lượng tổng thể và tác động của cuộc hội thoại.

Làm cho trò chơi thú vị hơn với hệ thống đối thoại

Việc thêm hệ thống đối thoại vào trò chơi của bạn bằng thư viện Arcade trong Python có thể nâng cao đáng kể trải nghiệm của người chơi. Nó cho phép các cuộc trò chuyện tương tác, kể chuyện và phát triển nhân vật, làm cho trò chơi của bạn trở nên hấp dẫn, hấp dẫn và thú vị hơn khi chơi.

Similar Posts

Leave a Reply

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