Python | Hiển thị văn bản vào cửa sổ PyGame

Category: Pygame

Pygame là một bộ mô-đun Python đa nền tảng được thiết kế để viết trò chơi điện tử. Nó bao gồm các thư viện đồ họa máy tính và âm thanh được thiết kế để sử dụng với ngôn ngữ lập trình Python. Tùy thuộc vào trí tưởng tượng hoặc nhu cầu của nhà phát triển, loại trò chơi nào họ muốn phát triển bằng bộ công cụ này sẽ được quyết định
.

Lệnh cài đặt pygame trên hệ điều hành Windows:  

pip install pygame


Có 7 bước cơ bản để hiển thị Văn bản trên cửa sổ pygame: 
 

  • Tạo đối tượng bề mặt hiển thị bằng phương thức display.set_mode() của pygame.

  • Tạo đối tượng Font bằng phương thức font.Font() của pygame.

  • Tạo một đối tượng bề mặt văn bản iesurface trong đó Văn bản được vẽ trên đó, sử dụng phương thức render() của đối tượng phông chữ pygame.

  • Tạo một đối tượng hình chữ nhật cho đối tượng bề mặt văn bản bằng phương thức get_rect() của đối tượng bề mặt văn bản pygame.

  • Đặt vị trí của đối tượng hình chữ nhật bằng cách đặt giá trị thuộc tính tâm của đối tượng hình chữ nhật pygame.

  • Sao chép đối tượng bề mặt văn bản vào đối tượng bề mặt hiển thị bằng phương thức blit() của đối tượng bề mặt hiển thị pygame.

  • Hiển thị đối tượng bề mặt hiển thị trên cửa sổ pygame bằng phương thức display.update() của pygame.


Dưới đây là cách thực hiện:

# nhập mô-đun pygame trong chương trình này
import pygame

# kích hoạt thư viện pygame
# khởi tạo pygame và cho phép sử dụng
# các chức năng của pygame.
pygame.init()

# định nghĩa giá trị RGB cho màu trắng,
# xanh lá cây, xanh dương.
white = (255, 255, 255)
green = (0, 255, 0)
blue = (0, 0, 128)

# gán giá trị cho biến X và Y
X = 400
Y = 400

# tạo đối tượng bề mặt hiển thị
# với kích thước xác định (X, Y).
display_surface = pygame.display.set_mode((X, Y))

# đặt tên cửa sổ pygame
pygame.display.set_caption('Show Text')

# tạo một đối tượng font.
# Tham số 1 là tệp font có sẵn trong pygame.
# Tham số 2 là kích thước chữ
font = pygame.font.Font('freesansbold.ttf', 32)

# tạo một đối tượng surface chứa văn bản,
# trên đó văn bản sẽ được vẽ.
text = font.render('GeeksForGeeks', True, green, blue)

# tạo một đối tượng hình chữ nhật cho
# đối tượng surface chứa văn bản
textRect = text.get_rect()

# đặt vị trí tâm của đối tượng hình chữ nhật.
textRect.center = (X // 2, Y // 2)

# vòng lặp vô hạn
while True:

    # tô đầy đối tượng surface
    # với màu trắng hoàn toàn
    display_surface.fill(white)

    # sao chép đối tượng surface chứa văn bản
    # lên bề mặt hiển thị
    # tại vị trí tâm.
    display_surface.blit(text, textRect)

    # lặp qua danh sách các đối tượng sự kiện
    # được trả về bởi phương thức pygame.event.get()
    for event in pygame.event.get():

        # nếu loại sự kiện là QUIT
        # thì thoát pygame
        # và thoát chương trình.
        if event.type == pygame.QUIT:

            # tắt thư viện pygame
            pygame.quit()

            # thoát chương trình
            quit()

        # vẽ đối tượng surface lên màn hình.
        pygame.display.update()

Đầu ra: 
 

Đầu ra - 1


Bây giờ chúng ta sẽ thấy một trong những ứng dụng Hiển thị văn bản nhưng theo một cách khác, đó là cuộn văn bản theo 6 cách khác nhau trên cửa sổ pygame.

1. Cuộn văn bản lên trên Màn hình.

2. Cuộn văn bản ở cuối màn hình.

3. Cuộn văn bản ở phía bên trái của Màn hình

4. Cuộn văn bản ở phía bên phải của Màn hình

5. Cuộn văn bản theo đường chéo từ trái sang phải của Màn hình

6. Cuộn văn bản theo đường chéo từ bên phải sang bên trái của Màn hình.

Sau khi xem Mã bên dưới, bạn có thể triển khai mẫu của riêng mình 

Dưới đây là phần triển khai

# nhập mô-đun pygame trong chương trình này
import pygame

# kích hoạt thư viện pygame
# khởi tạo pygame và cho phép sử dụng
# các chức năng của pygame.
pygame.init()

# tạo đối tượng bề mặt hiển thị
# (x, y) là chiều rộng và chiều cao cửa sổ pygame
win = pygame.display.set_mode((500, 500))

# đặt tên cửa sổ pygame
pygame.display.set_caption("Scrolling Text")

# thiết lập font chữ (tham số 1 là tên font),
# và kích thước chữ (tham số 2)
Font = pygame.font.SysFont('timesnewroman', 30)

# định nghĩa giá trị RGB cho các màu trắng, vàng, xanh, cam
white = (255, 255, 255)
yellow = (255, 255, 0)
green = (0, 255, 255)
orange = (255, 100, 0)
done = False

# chia văn bản thành các chữ cái riêng lẻ
# tham số 3 là màu chữ và tham số 4 là màu nền
letter1 = Font.render("H", False, orange, yellow)
letter2 = Font.render("E", False, orange, green)
letter3 = Font.render("M", False, orange, yellow)
letter4 = Font.render("A", False, orange, green)
letter5 = Font.render("N", False, orange, yellow)
letter6 = Font.render("T", False, orange, green)
letter7 = Font.render("H", False, orange, yellow)

# gán giá trị cho biến i và c
i = 0
c = 1

# vòng lặp vô hạn
while not done:
    if i >= 820:
        i = 0
        c += 1
        pygame.time.wait(500)

    # tô đầy bề mặt với màu trắng
    win.fill(white)

    if c % 6 == 0:
        # Cuộn chữ theo đường chéo về bên phải màn hình
        # sao chép các chữ lên màn hình tại vị trí tương ứng
        win.blit(letter1, (662 - i, -162 + i))
        win.blit(letter2, (639 - i, -139 + i))
        win.blit(letter3, (608 - i, -108 + i))
        win.blit(letter4, (579 - i, -79 + i))
        win.blit(letter5, (552 - i, -52 + i))
        win.blit(letter6, (529 - i, -29 + i))
        win.blit(letter7, (500 - i, 0 + i))
        i += 80

    if c % 6 == 5:
        # Cuộn chữ theo đường chéo về bên trái màn hình
        win.blit(letter1, (-162 + i, -162 + i))
        win.blit(letter2, (-135 + i, -135 + i))
        win.blit(letter3, (-110 + i, -110 + i))
        win.blit(letter4, (-79 + i, -79 + i))
        win.blit(letter5, (-52 + i, -52 + i))
        win.blit(letter6, (-27 + i, -27 + i))
        win.blit(letter7, (0 + i, 0 + i))
        i += 80

    if c % 6 == 4:
        # Cuộn chữ dọc từ trên xuống bên phải màn hình
        win.blit(letter1, (480, -180 + i))
        win.blit(letter2, (480, -150 + i))
        win.blit(letter3, (480, -120 + i))
        win.blit(letter4, (480, -90 + i))
        win.blit(letter5, (480, -60 + i))
        win.blit(letter6, (480, -30 + i))
        win.blit(letter7, (480, 0 + i))
        i += 80

    if c % 6 == 3:
        # Cuộn chữ dọc từ trên xuống bên trái màn hình
        win.blit(letter1, (0, -180 + i))
        win.blit(letter2, (0, -150 + i))
        win.blit(letter3, (0, -120 + i))
        win.blit(letter4, (0, -90 + i))
        win.blit(letter5, (0, -60 + i))
        win.blit(letter6, (0, -30 + i))
        win.blit(letter7, (0, 0 + i))
        i += 80

    if c % 6 == 1:
        # Cuộn chữ ngang từ trái qua phải phía trên
        win.blit(letter1, (-124 + i, 0))
        win.blit(letter2, (-102 + i, 0))
        win.blit(letter3, (-82 + i, 0))
        win.blit(letter4, (-58 + i, 0))
        win.blit(letter5, (-40 + i, 0))
        win.blit(letter6, (-19 + i, 0))
        win.blit(letter7, (0 + i, 0))
        i += 80

    if c % 6 == 2:
        # Cuộn chữ ngang từ trái qua phải phía dưới màn hình
        win.blit(letter1, (-124 + i, 470))
        win.blit(letter2, (-102 + i, 470))
        win.blit(letter3, (-82 + i, 470))
        win.blit(letter4, (-58 + i, 470))
        win.blit(letter5, (-40 + i, 470))
        win.blit(letter6, (-19 + i, 470))
        win.blit(letter7, (0 + i, 470))
        i += 80

    # vẽ các đối tượng lên màn hình
    pygame.display.update()

    # duyệt qua các sự kiện người dùng
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    # thời gian chờ 5ms
    pygame.time.wait(500)

pygame.quit()

Đầu ra:

1. Khi văn bản đang cuộn trên đầu màn hình

2. Khi văn bản cuộn ở phía dưới màn hình

3. Khi văn bản cuộn ở phía bên trái của màn hình

4. Khi văn bản cuộn ở bên phải màn hình

5. Khi văn bản cuộn theo đường chéo từ bên trái màn hình

6. Khi văn bản cuộn theo đường chéo từ bên phải màn hình

Published on Jul 28, 2025

Related Posts