Cách triển khai hệ thống sức khỏe trong PyGame

Đưa hệ thống sức khỏe, bao gồm sát thương, cơ chế hồi máu… vào game sẽ khiến trò chơi thú vị hơn. Dưới đây là cách triển khai hệ thống sức khỏe trong PyGame.

Hệ thống sức khỏe trong PyGame

Tạo một game đơn giản

Trước khi bắt đầu, đảm bảo bạn đã cài pip trên hệ thống. Dùng lệnh này để cài thư viện pygame.

pip install pygame

Sau đó, tạo một file tên simple-game.py và bắt đầu bằng cách tạo một game đơn giản tại nơi người chơi có thể di chuyển sang trái và phải.

Trong vòng lặp game cơ bản, mục tiêu của người chơi là tránh va chạm với kẻ thù.

import pygame
import random

# Khởi tạo PyGame
pygame.init()

# Thiết lập cửa sổ game
window_width, window_height = 800, 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Health System Demo")

# Thuộc tính người chơi
player_width, player_height = 50, 50
player_x, player_y = window_width // 2, window_height - player_height - 10
player_speed = 1

# Thuộc tính kẻ thù
enemy_width, enemy_height = 50, 50
enemy_x, enemy_y = random.randint(0, window_width - enemy_width), 0
enemy_speed = 0.3

# Loop game
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

# Di chuyển người chơi sang trái hoặc phải
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < window_width - player_width:
player_x += player_speed

# Di chuyển kẻ thù xuống
enemy_y += enemy_speed

# Vẽ đối tượng game
window.fill((0, 0, 0)) # Làm sạch màn hình
pygame.draw.rect(window, (255, 0, 0),
(player_x, player_y,
player_width, player_height))
pygame.draw.rect(window, (0, 255, 0),
(enemy_x, enemy_y,
enemy_width, enemy_height)) # Draw enemy
pygame.display.update()

pygame.quit()

Chạy code này và bạn sẽ thấy một cửa sổ với nhân vật người chơi để điều khiển bằng các phím mũi tên sang trái và phải.

Tạo hệ thống sức khỏe cho PyGame

Xác định các biến và hằng số liên quan tới sức khỏe

Sau khi thiết lập xong game cơ bản, giờ là lúc xác định các biến và hằng số liên quan tới sức khỏe của người chơi. Bạn có thể dùng một hệ thống sức khỏe đơn giản tại nơi tượng trưng cho sức khỏe của một người chơi bằng giá trị số. Bạn cũng có thể xác định hằng số cho máu tối đa và lượng sát thương do kẻ thù gây ra.

Đặt trạng thái sức khỏe (hay máu) của người chơi ban đầu là 100, tối đa là 100 và sát thương của địch là 20. Những giá trị này có thể được điều chỉnh theo nhu cầu cụ thể của trò chơi.

# Sức khỏe của người chơi
player_health = 100
max_health = 100
enemy_damage = 20

Thiết lập cơ chế sát thương và hồi máu

Để giới thiệu cơ chế sát thương và hồi máu, bạn cần phát hiện va chạm giữa người chơi và kẻ thù, đồng thời xử lý những thay đổi sức khỏe tương ứng. Bạn cũng có thể triển khai cơ chế hồi máu cho người chơi khi họ di chuyển ra khỏi màn hình.

Kiểm tra xem liệu giữa người chơi và kẻ thù có xảy ra va chạm hay không bằng cách so sánh các hình chữ nhật bao quanh họ. Nếu phát hiện va chạm, hãy trừ đi giá trị sát thương của địch từ máu của người chơi.

Ngoài ra, nếu người chơi di chuyển ra ngoài phía trên của màn hình (player_y < 0), thêm 10 vào phần sức khỏe, đồng thời đảm bảo nó không vượt quá giới hạn tối đa. Điều này tạo một cơ chế hồi màu và thiết lập lại vị trí của người chơi về phía dưới cùng của màn hình.

Tạo file mới tên damage-and-healing.py và thêm code với những update bên dưới:

# Bên trong vòng lặp game, cập nhật vị trí kẻ thù
# Phát hiện va chạm giữa người chơi và kẻ thù
if player_x < enemy_x + enemy_width and \
           player_x + player_width > enemy_x and \
           player_y < enemy_y + enemy_height \
           and player_y + player_height > enemy_y:
   player_health -= enemy_damage
   print(player_health)

# Hồi máu cho người chơi khi họ di chuyển ra ngoài màn hình
if player_y < 0:
   player_health += 10
   print(player_health)
   if player_health > max_health:
       player_health = max_health
       player_y = window_height - player_height - 10

Kết quả:

Hồi máu cho người chơi

Quản lý trường hợp người chơi chết và game over

Để xử lý trường hợp người chơi bị chết và thua cuộc, bạn cần kiểm tra xem liệu sức khỏe của người chơi hay máu có về 0. Nếu có, hiện thông báo Game Over và khởi động lại game.

Kiểm tra thêm xem máu của người chơi nằm dưới hay bằng 0. Nếu điều kiện đúng, trong Game Over, thiết lập lại sức khỏe và vị trí của người chơi.

Tạo file mới tên manage-player-death.py và chỉnh sửa code với những cập nhật bên dưới:

# Sau khi update vị trí của người chơi

# Kiểm tra xem máu của người chơi có chạm mốc 0 hay chưa
if player_health <= 0:
    print("Game Over")
    player_health = max_health
    player_x = window_width // 2
    player_y = window_height - player_height - 10

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

Để nâng cao hệ thống sức khỏe, bạn có thể kết hợp thêm một số tính năng bổ sung, ví dụ:

Power-ups

Xác định các thuộc tính của power-up, như quy mô và vị trí. Ngoài ra, đặt giá trị sức khỏe mà người chơi sẽ đạt được khi va chạm với power-up.

Trong game loop, phát hiện va chạm giữa người chơi và power-up. Nếu va chạm xảy ra, tăng sức khỏe của người chơi bằng giá trị độ mạnh của power-up, đảm bảo nó không vượt quá giá trị tối đa. Định vị lại power-up ngẫu nhiên trên màn hình. Cuối cùng, vẽ đối tượng power-up trên màn hình bằng hình chữ nhật màu xanh dương.

Tạo file mới tên power-up.py và thêm code cùng các update bên dưới:

# Xác định thuộc tính power-up 
power_up_width, power_up_height = 30, 30
power_up_x, power_up_y = 200,200
power_up_health_value = 50

# Bên trong vòng lặp game, sau khi update vị trí của người chơi
# Phát hiện va chạm giữa người chơi và power-up
if player_x < power_up_x + power_up_width and\
      player_x + player_width > power_up_x \
        and player_y < power_up_y + power_up_height\
         and player_y + player_height > power_up_y:
    player_health += power_up_health_value
    if player_health > max_health:
        player_health = max_health
    power_up_x, power_up_y = 200,200

# Vẽ đối tượng power-up
pygame.draw.rect(window, (0, 0, 255), 
                    (power_up_x, power_up_y, 
                     power_up_width, 
                     power_up_height))

Kết quả:

Thêm power-up cho PyGame

Với mỗi tính năng bổ sung, bạn có thể xác định các biến cần thiết và hằng số, đồng thời triển khai những cơ chế tương ứng trong vòng lặp game.

Thêm hệ thống sức khỏe vào game không chỉ bổ sung thử thách mà còn khiến trò chơi hấp dẫn hơn. Như bạn thấy cách tạo hệ thống sức khỏe trong PyGame cũng không quá khó phải không?

Thứ Tư, 28/06/2023 16:46
51 👨 121
0 Bình luận
Sắp xếp theo
    ❖ Python