Cách tải font tùy biến và hiệu ứng text trong Pygame

Bạn có thể cá nhân hóa game bằng text thể hiện thiết kế và thể loại trò chơi. Dưới đây là hướng dẫn chi tiết.

Lập trình game

Yếu tố thẩm mỹ đóng vai trò quan trọng trong lập trình game. Những chi tiết nhỏ có thể ảnh hưởng tới cách game thu hút sự chú ý của người chơi và khiến họ đắm chìm trong thế giới game. Những font tùy chỉnh và hiệu ứng văn bản cho phép bạn đưa cá tính và phong cách cá nhân vào giao diện, hội thoại và các thành phần HUD của game.

Dù đang thiết kế game phiêu lưu, giải đố hay bất kỳ hiệu ứng font, text nào khác, bạn đều có thể biến đổi dự án từ cơ bản tới hấp dẫn.

Tạo game 2D đơn giản

Trước khi đi sâu vào thế giới của những hiệu font và text tùy chỉnh, tạo nền tảng game 2D cơ bản. Ở ví dụ này, thiết kế game với chuyển động người chơi bằng các tính năng của Pygame.

Để bắt đầu, thiết lập cửa sổ game. Pygame cung cấp hàm pygame.display.set_mode() để tạo cửa sổ hiện trò chơi. Bạn cũng có thể đặt tiêu đề cho cửa sổ bằng pygame.display.set_caption().

import pygame
pygame.init()

# Thiết lập hiển thị
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("My Pygame Adventure")

Giờ khởi tạo đối tượng người chơi bằng class pygame.Rect(). Class này biểu thị một hình chữ nhật, mà bạn có thể dùng để hiện nhân vật và các đối tượng trong game 2D.

# Khởi tạo người chơi
player = pygame.Rect(50, 50, 50, 50)
player_color = (255, 0, 0)

Vòng lặp game chính là trung tâm của trò chơi, nơi tất cả hành động hiện ra. Nó liên tục kiểm tra thông tin đầu vào của người chơi, update trạng thái game và vẽ lại màn hình.

# Vòng lặp game chính
running = True

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

    # Chuyển động người chơi
    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        player.x -= 5

    if keys[pygame.K_RIGHT]:
        player.x += 5

    if keys[pygame.K_UP]:
        player.y -= 5

    if keys[pygame.K_DOWN]:
        player.y += 5

    screen.fill((0, 0, 0))

    # Vẽ người chơi
    pygame.draw.rect(screen, player_color, player)

    # Update màn hình
    pygame.display.flip()

pygame.quit()

Kết quả:

Game phiêu lưu trong Pygame

Thêm text cho game

Để hiện văn bản, bắt đầu bằng cách tải font bằng class pygame.font.Font(). Bạn có thể chỉ định file font và kích thước font:

# Tải font
font = pygame.font.Font(None, 36)

Với font đã tải, giờ bạn có thể kết xuất và hiện văn bản trên màn hình. Phương thức render() của đối tượng font lấy text, cài đặt khử răng cưa và màu sắc làm đối số. Sau đó, bạn có thể dùng hàm blit() để vẽ văn bản được hiện trên màn hình.

# Vòng lặp game chính
while running:
    # Vẽ người chơi

    # Kết xuất và hiện text
    text = font.render("Welcome to My Game", True, (255, 255, 255))
    screen.blit(text, (width // 2 - text.get_width() // 2, 10))

    # Update màn hình

Kết quả trông sẽ như sau:

Chào mừng tới game

Thêm font tùy biến

Dù font mặc định đã hoạt động tốt, dùng font tùy biến có thể cải thiện đáng kể độ hấp dẫn của hình ảnh game. Để thêm font tùy biến, hãy làm theo những bước sau:

Đầu tiên, bạn cần một file font TrueType tùy biến (TTF) phù hợp với thẩm mỹ của game. Hiện có nhiều tài nguyên online mà bạn có thể tìm font miễn phí hoặc mất phí.

Đặt file font đã tải trong cùng thư mục làm tập lệnh game. Điều này đảm bảo Pygame có thể định vị và tải font đó.

# Tải font tùy biến
custom_font = pygame.font.Font("custom_font.ttf", 48)

# Vòng lặp game chính
while running:
    # Vẽ người chơi

    #Kết xuất và hiện text font tùy biến
    custom_text = custom_font.render("Custom Font Text", True, (0, 255, 0))
    screen.blit(custom_text, (width // 2 - custom_text.get_width() // 2, 100))

    # Update màn hình

Bạn sẽ thấy text hiện ở font đã chọn:

Tùy biến font chữ cho game

Tạo hiệu ứng văn bản

Thêm hiệu ứng văn bản vào game có thể biến đổi text tĩnh sang động và các thành phần thu hút sự chú ý. Một trong số hiệu ứng text đơn giản nhất nhưng hiệu quả là hiệu ứng rung động.

Hiệu ứng text rung động liên quan tới việc làm text xuất hiện để mở rộng và co lại nhịp nhàng. Đây là cách bạn có thể triển khai hiệu ứng này:

# Vòng lặp game chính
while running:
    # Vẽ người chơi

    # Tạo văn bản với hiệu ứng rung 
    pulsating_text = custom_font.render("Pulsating Text", True, (0, 0, 255))

    #Tính hệ số xung theo thời gian
    pulsation_factor = 1 + abs((pygame.time.get_ticks() % 1000) - 500) / 500

    width = int(pulsating_text.get_width() * pulsation_factor)
    height = int(pulsating_text.get_height() * pulsation_factor)

    #Chia tỷ lệ văn bản dựa trên hệ số xung
    pulsating_text = pygame.transform.scale(
        pulsating_text,
        (width, height)
    )

    # Tính toán vị trí văn bản để căn giữa trên màn hình
    text_x = width // 2 - pulsating_text.get_width() // 2
    text_y = 200

    screen.blit(pulsating_text, (text_x, text_y))

    # Update the screen

Tính hệ số xung dựa trên thời gian hiện tại bằng cách sử dụng pygame.time.get_ticks(). Bằng cách điều chỉnh hệ số, bạn kiểm soát được mức độ giãn nở và co lại, từ đó đạt được hiệu ứng rung động.

Bên cạnh hiệu ứng xung, bạn có thể thử nhiều hiệu ứng text khác để tăng thêm độ tinh tế cho trò chơi:

  1. Hiệu ứng đánh máy chữ: Hiển thị văn bản theo từng chữ cái, mô phỏng âm thanh của máy đánh chữ.
  2. Hiệu ứng văn bản mờ dần: Dần dần làm mờ văn bản ở phía trong hoặc ngoài để tạo hiệu ứng chuyển tiếp mượt mà.
  3. Hiệu ứng rung lắc: Làm cho văn bản bị giật hoặc lắc nhẹ để tạo cảm giác cấp bách hoặc phấn khích.
  4. Hiệu ứng phát sáng. Thêm hiệu ứng phát sáng tinh tế cho text để làm nó nổi bật trong môi trường tối.

Để triển khai những hiệu ứng này, bạn có thể kết hợp các kỹ thuật như thay đổi kênh alpha (trong suốt), chỉnh sửa vị trí và áp dụng chuyển tiếp màu sắc.

Đừng sợ sáng tạo và thử kết hợp các hiệu ứng để tìm ra lựa chọn hoàn hảo phù hợp với kiểu game của bạn.

Trên đây là những cách tải font tùy biến và thêm hiệu ứng text cho Pygame. Hi vọng bài viết hữu ích với các bạn.

Thứ Ba, 05/09/2023 09:36
51 👨 1.124
0 Bình luận
Sắp xếp theo