/ / Cách tạo kẻ thù trong trò chơi điện tử Python

Cách tạo kẻ thù trong trò chơi điện tử Python

Kẻ thù đóng một vai trò quan trọng trong việc tạo ra các trò chơi hấp dẫn và đầy thử thách. Chúng cung cấp các chướng ngại vật và đối thủ cho người chơi, giúp trải nghiệm chơi trò chơi trở nên thú vị hơn. Thư viện Arcade của Python cung cấp một cách đơn giản để kết hợp kẻ thù vào trò chơi của bạn.



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 

Sau đó, hãy bắt đầu bằng cách tạo một trò chơi đơn giản trong đó 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.

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.

 import arcade


SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600


PLAYER_RADIUS = 25
PLAYER_SPEED = 5

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2

    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color.BLUE)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_x -= PLAYER_SPEED
        elif key == arcade.key.RIGHT:
            self.player_x += PLAYER_SPEED

    def update(self, delta_time):
        pass

def main():
    window = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
    arcade.run()

if __name__ == "__main__":
    main()

Tạo một kẻ thù đơn giản

Để tạo kẻ thù giết chết người chơi khi va chạm, hãy tạo một vòng tròn khác trên màn hình. bên trong on_draw chức năng, bạn có thể vẽ vòng tròn kẻ thù này và kiểm tra va chạm trong cập nhật phương pháp. Bạn cũng có thể sử dụng sprite cho kẻ thù.

 

class GameWindow(arcade.Window):
    

    def __init__(self, width, height):
        

        
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_radius = 20

    def on_draw(self):
        
        arcade.draw_circle_filled(self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

Khiến kẻ thù đi theo người chơi

Trong một số trò chơi, kẻ thù có thể đuổi theo người chơi, thêm yếu tố động vào lối chơi. Để tạo kẻ thù tiếp theo, bạn cần cập nhật vị trí của nó dựa trên vị trí của người chơi. Bất cứ khi nào người chơi di chuyển, kẻ thù sẽ di chuyển theo cùng một hướng. Bạn có thể đạt được điều này bằng cách sửa đổi cập nhật phương pháp. Tạo một tệp mới có tên kẻ thù-theo-player.py và thêm mã với các bản cập nhật bên dưới:

 

class GameWindow(arcade.Window):
    

    def update(self, delta_time):
        if self.player_x < self.enemy_x:
            self.enemy_x -= PLAYER_SPEED
        elif self.player_x > self.enemy_x:
            self.enemy_x += PLAYER_SPEED

        if self.is_collision(self.player_x, self.player_y,
                            self.enemy_x, self.enemy_y,
                            PLAYER_RADIUS, ENEMY_RADIUS):
           print("Game Over!")
  
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

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

kẻ thù theo dõi người chơi trong trò chơi điện tử

Thêm đạn kẻ thù

Để tạo kẻ thù bắn đạn, hãy tạo một Đạn lớp và một danh sách để theo dõi các viên đạn đang hoạt động. Kẻ thù sẽ định kỳ tạo một viên đạn mới và cập nhật vị trí của nó. Tạo một tệp mới có tên đạn.py và thêm mã với các bản cập nhật bên dưới:

 

class Bullet:
    def __init__(self, x, y, radius, speed):
        self.x = x
        self.y = y
        self.radius = radius
        self.speed = speed

    def update(self):
        self.y -= self.speed

class GameWindow(arcade.Window):
    

    def __init__(self, width, height):
        

        
        self.bullets = []
        self.bullet_radius = 5
        self.bullet_speed = 3
        self.bullet_cooldown = 60
        self.bullet_timer = 0

    def on_draw(self):
        
        for bullet in self.bullets:
            arcade.draw_circle_filled(bullet.x, bullet.y,
           self.bullet_radius, arcade.color.BLACK)

    def update(self, delta_time):
        

        self.bullet_timer += 1
        if self.bullet_timer >= self.bullet_cooldown:
            self.bullets.append(Bullet(self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
            self.bullet_timer = 0

        for bullet in self.bullets:
            bullet.update()
            if self.is_collision(self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

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

kẻ thù bắn đạn về phía người chơi

Thêm điểm sức khỏe cho kẻ thù

Trong nhiều trò chơi, kẻ thù có thể sở hữu điểm máu (HP), cho phép chúng chịu nhiều đòn đánh trước khi bị đánh bại. Thêm điểm sức khỏe cho kẻ thù có thể giới thiệu các yếu tố chơi trò chơi chiến lược và mang lại cảm giác tiến bộ và thử thách. Tạo một tệp mới có tên heath-point.py và thêm mã với các bản cập nhật bên dưới:

 
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600


PLAYER_RADIUS = 25
PLAYER_SPEED = 5


ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2
        self.player_y = height // 2
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_health = ENEMY_HEALTH
        print(self.enemy_health)
    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x,
                                  self.player_y,
                                  PLAYER_RADIUS,
                                  arcade.color.BLUE)
        if self.enemy_health > 0:
            arcade.draw_circle_filled(self.enemy_x,
                                      self.enemy_y,
                                      ENEMY_RADIUS,
                                      arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y,
                             self.enemy_x, self.enemy_y,
                             PLAYER_RADIUS, ENEMY_RADIUS):
            self.enemy_health -= 10
            print(self.enemy_health)
        

Các ENEMY_HEALTH hằng số có giá trị 100 để biểu thị điểm máu ban đầu của kẻ thù. Khi người chơi va chạm với kẻ thù, bạn có thể trừ một số điểm từ sức khỏe của kẻ thù. Để hiển thị giá trị sức khỏe được cập nhật, bạn có thể in một đối tượng văn bản self.health_text điều đó cho thấy sức khỏe của kẻ thù hiện tại.

Bằng cách kết hợp điểm sức khỏe cho kẻ thù, bạn có thể đưa ra một lớp thử thách và chiến lược cho người chơi. Giá trị sức khỏe được hiển thị cung cấp phản hồi trực quan và cho phép người chơi theo dõi lượng máu còn lại của kẻ thù.

Ngoài ra, bạn có thể mở rộng mã bằng cách thêm logic và hình ảnh khác, chẳng hạn như hiển thị thanh sức khỏe hoặc thực hiện các điều kiện đánh bại khi sức khỏe của kẻ thù bằng không.

Các phương pháp hay nhất để tạo kẻ thù

Khi thiết kế kẻ thù cho trò chơi của bạn, điều quan trọng là phải xem xét một số phương pháp hay nhất để đảm bảo chúng góp phần tạo nên trải nghiệm chơi trò chơi đầy thử thách và thú vị. Dưới đây là một số nguyên tắc cần tuân theo khi tạo kẻ thù:

thuộc tính đa dạng

Tạo kẻ thù với các thuộc tính khác nhau như tốc độ, kích thước, sức khỏe và sức tấn công. Các loại kẻ thù khác nhau nên đặt ra các mức độ khó khác nhau, đòi hỏi người chơi phải điều chỉnh chiến lược của mình cho phù hợp. Bằng cách giới thiệu hỗn hợp các thuộc tính của kẻ thù, bạn có thể giữ cho lối chơi luôn mới mẻ và hấp dẫn.

Hành vi độc đáo

Cung cấp cho mỗi loại kẻ thù các mẫu hành vi độc đáo của riêng mình. Một số kẻ thù có thể di chuyển theo cách có thể đoán trước được, trong khi những kẻ khác có thể di chuyển phức tạp hơn hoặc thất thường hơn. Cân nhắc kết hợp các thuật toán AI của kẻ thù để làm cho hành vi của chúng trở nên thông minh và khó đoán hơn, tăng thêm một lớp thử thách cho người chơi.

Điểm sức khỏe (HP)

Thực hiện các điểm sức khỏe cho kẻ thù để mang lại cảm giác tiến bộ và bền bỉ. Điều này cho phép kẻ thù chịu nhiều đòn trước khi bị đánh bại. Bằng cách chỉ định lượng HP khác nhau cho các loại kẻ thù khác nhau, bạn có thể tạo hệ thống phân cấp độ khó và khuyến khích người chơi lập chiến lược và ưu tiên mục tiêu của họ.

Làm cho trò chơi thú vị hơn với kẻ thù

Thêm kẻ thù vào trò chơi của bạn có thể nâng cao đáng kể trải nghiệm chơi trò chơi. Họ giới thiệu những thách thức và thúc đẩy người chơi cải thiện kỹ năng của họ. Kẻ thù có thể xuất hiện dưới nhiều hình thức khác nhau, từ những chướng ngại vật đơn giản đến những kẻ thù phức tạp do AI điều khiển. Bằng cách triển khai kẻ thù một cách hiệu quả, bạn có thể khiến trò chơi của mình trở nên hấp dẫn và thú vị hơn đối với người chơi.

Similar Posts

Leave a Reply

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