Game thường được thiết kế với nhiều cấp độ khác nhau giúp nó hấp dẫn và thú vị hơn. Dưới đây là hướng dẫn cách thiết kế và tạo cấp độ trong PyGame.
Cấp độ là một khía cạnh cơ bản của hầu hết video game. Chúng cung cấp cấu trúc, thử thách và sự đa dạng, thậm chí có thể nâng cao đáng kể trải nghiệm của người chơi. PyGame, một thư viện Python phổ biến trong phát triển game, cung cấp các tính năng khác nhau mà bạn có thể dễ dàng tạo ra nhiều cấp độ. Một cấp độ được thiết kế tốt dễ thu hút người chơi, thúc đẩy cảm giác chinh phục để nhận được những những phần thưởng xứng đáng.
Lên kế hoạch và thiết kế các cấp độ
Trước khi tạo cấp độ, bạn cần lên kế hoạch và thiết kế chúng. Lên kế hoạch cấp độ giúp việc tạo game có cấu trúc tốt, cho độ khó phù hợp. Để làm việc này, bạn cần cân nhắc các nhân tố như cơ chế chơi game, câu chuyện và cấu trúc tổng thể của game.
Ví dụ, nếu đang định thiết kế một game platformer, bạn cần nghĩ tới vị trí đặt platform, kẻ thù và vật cản. Bạn cũng phải xem xét tới chuyển động của người chơi như nhảy, chạy và thiết kế cấp độ phù hợp.
Tạo hai cấp độ đơ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
Giờ tạo hai cấp độ đơn giản với một platform và người chơi. Đây là code cho cấp độ đầu tiên:
import pygame
pygame.init()
# Xác định các chỉ số
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 100
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)
# Tạo màn hình
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Tạo platform
platform = pygame.Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)
# Tạo người chơi
player = pygame.Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.move_ip(-10, 0)
elif event.key == pygame.K_RIGHT:
player.move_ip(10, 0)
# Tô màu đen cho màn hình
screen.fill((0, 0, 0))
# Vẽ platform
pygame.draw.rect(screen, PLATFORM_COLOR, platform)
# Vẽ người chơi
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update màn hình
pygame.display.flip()
pygame.quit()
Sau đó, tạo cấp độ thứ hai bằng cách chỉ thay đổi platform và vị trí của người chơi. Đây là code cho cấp độ thứ hai:
import pygame
pygame.init()
# Xác định các chỉ số
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 150
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)
# Tạo màn hình
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Tạo platform
platform = pygame.Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)
# Tạo người chơi
player = pygame.Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.move_ip(-10, 0)
elif event.key == pygame.K_RIGHT:
player.move_ip(10, 0)
# Tô màu đen cho màn hình
screen.fill((0, 0, 0))
# Vẽ platform
pygame.draw.rect(screen, PLATFORM_COLOR, platform)
# Vẽ người chơi
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update màn hình
pygame.display.flip()
pygame.quit()
Code này tương tự như cấp độ đầu tiên, nhưng platform và vị trí của người chơi sẽ thay đổi.
Kết nối các cấp độ khác nhau
Để kết nối các cấp độ khác nhau, bạn cần chỉnh sửa vòng lặp game để chuyển đổi giữa các cấp độ khi người chơi qua một bàn. Bạn có thể làm việc này bằng cách tạo một biến để theo dõi cấp độ hiện tại và dùng lệnh điều kiện để chuyển giữa các cấp. Bạn cũng có thể phát hiện va chạm để kiểm tra xem người chơi đã tới cuối một cấp độ hay chưa.
Đây là vòng lặp game đã chỉnh sửa:
current_level = 1
# Vẽ platform và người chơi dựa trên cấp độ hiện tại
if current_level == 1:
pygame.draw.rect(screen, PLATFORM_COLOR, platform1)
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Check if the player has reached the end of the level
if player.colliderect(platform1) == False:
current_level = 2
elif current_level == 2:
pygame.draw.rect(screen, PLATFORM_COLOR, platform2)
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Check if the player has reached the end of the level
if player.colliderect(platform2) == True:
running = False
Chia sẻ dữ liệu game giữa các cấp độ
Bạn cần lưu dữ liệu game để chia sẻ nó giữa các cấp độ. Làm việc này bằng cách tạo một mô đun Python riêng biệt để lưu trữ dữ liệu game và nhập nó vào từng cấp độ.
Đây là các bước cụ thể:
- Tạo một mô đun Python mới tên game_data.py.
- Xác định một biến toàn cục trong mô đun game_data.py để lưu trữ vị trí của người chơi.
- Ở từng cấp độ, nhập mô đun game_data.
- Để truy xuất vị trí của người chơi ở từng cấp độ, dùng biến game_data.player_pos thay vì tạo một đối tượng người chơi mới.
- Để update vị trí của người chơi, chỉnh sửa giá trị game_data.player_pos trong mỗi lần lặp lại.
Đây là code đã chỉnh sửa để chia sẻ vị trí của người chơi giữa các cấp độ.
Trong mô đun game_data.py, thêm code sau:
player_pos = (0, 0)
Cấp đầu tiên:
import pygame
import game_data
# Tạo người chơi
player = pygame.Rect(game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)
# Game loop
running = True
while running:
# Vẽ người chơi
pygame.draw.rect(screen, PLAYER_COLOR, player)
# Update vị trí của người chơi trong mô đun game_data
game_data.player_pos = (player.x, player.y)
Trên đây là cách thiết kế và tạo cấp độ trong Pygame. Hi vọng bài viết hữu ích với các bạn.