Xây dựng và trực quan hóa trò chơi Sudoku bằng Pygame
Sudoku là một trò chơi giải đố sắp xếp số dựa trên logic, kết hợp. Mục tiêu là...
Category: Pygame
Trong bài viết này, chúng ta sẽ xem cách sử dụng mô-đun Pygame để thao tác với văn bản. Chúng ta sẽ thực hiện việc khởi tạo phông chữ, hiển thị văn bản, chỉnh sửa văn bản bằng bàn phím và thêm chú thích con trỏ nhấp nháy.
Để cài đặt mô-đun này, hãy nhập lệnh bên dưới vào terminal.
pip install pygame
Khởi tạo phông chữ
Bây giờ chúng ta có thể tiếp tục với phần khởi tạo phông chữ. Phương thức pygame.font.init() được sử dụng để khởi tạo phông chữ và phương thức pygame.font.get_init() được sử dụng để kiểm tra xem phông chữ đã được khởi tạo hay chưa. Cả hai phương thức đều không yêu cầu bất kỳ đối số nào. Nếu phông chữ đã được khởi tạo thành công, phương thức pygame.font.get_init() trả về true.
Ở đây, chúng ta sẽ xem cách tùy chỉnh phông chữ và văn bản trên màn hình. Chúng ta sẽ thiết lập vị trí hiển thị của văn bản trên màn hình bằng tọa độ x và y. Trước tiên, chúng ta sẽ tạo các tệp phông chữ và sau đó hiển thị văn bản. Hàm screen. blit() được sử dụng để sao chép các đối tượng bề mặt văn bản vào các đối tượng bề mặt hiển thị tại tọa độ trung tâm.
# import pygame
import pygame
# khởi tạo pygame
pygame.font.init()
# kiểm tra xem font đã được khởi tạo
# hay chưa
pygame.font.get_init()
# tạo bề mặt hiển thị (cửa sổ)
display_surface = pygame.display.set_mode((500, 500))
# thay đổi tiêu đề cửa sổ
pygame.display.set_caption('Our Text')
# tạo đối tượng font bằng cách truyền tên font
# và kích thước chữ
font1 = pygame.font.SysFont('freesanbold.ttf', 50)
font2 = pygame.font.SysFont('chalkduster.ttf', 40)
# kết xuất các dòng văn bản mà bạn muốn hiển thị
text1 = font1.render('GeeksForGeeks', True, (0, 255, 0))
text2 = font2.render('GeeksForGeeks', True, (0, 255, 0))
# tạo đối tượng hình chữ nhật cho
# đối tượng surface của văn bản
textRect1 = text1.get_rect()
textRect2 = text2.get_rect()
# đặt vị trí tâm cho dòng văn bản thứ nhất
textRect1.center = (250, 250)
# đặt vị trí tâm cho dòng văn bản thứ hai
textRect2.center = (250, 300)
while True:
# thêm màu nền bằng giá trị RGB
display_surface.fill((255, 0, 0))
# sao chép đối tượng surface chứa văn bản
# lên bề mặt hiển thị
# tại tọa độ tâm đã chỉ định.
display_surface.blit(text1, textRect1)
display_surface.blit(text2, textRect2)
# duyệt 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():
if event.type == pygame.QUIT:
# tắt thư viện pygame
pygame.quit()
# thoát khỏi chương trình
quit()
# cập nhật hiển thị
pygame.display.update()
Đầu ra:
Chúng ta sẽ thêm Ghi chú Con trỏ Nhấp nháy ở đây. Con trỏ của chúng ta sẽ tiếp tục nhấp nháy sau mỗi 0,5 giây. Chúng ta cũng có thể chỉnh sửa văn bản.
# nhập mô-đun pygame
import pygame
# nhập mô-đun time
import time
# khởi tạo mô-đun pygame
pygame.init()
# thiết lập kích thước cửa sổ hiển thị
display_screen = pygame.display.set_mode((500, 500))
# thêm một dòng văn bản
text = 'Hello Guys!!'
# thêm kiểu font mặc định với kích thước
# chữ
font = pygame.font.SysFont(None, 40)
# kết xuất (render) văn bản
img = font.render(text, True, (255, 0, 0))
rect = img.get_rect()
rect.topleft = (20, 20)
cursor = pygame.Rect(rect.topright, (3, rect.height))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# phát hiện khi phím được nhấn
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_BACKSPACE:
if len(text) > 0:
# lưu văn bản ngoại trừ ký tự cuối cùng
text = text[:-1]
else:
text += event.unicode
img = font.render(text, True, (255, 0, 0))
rect.size = img.get_size()
cursor.topleft = rect.topright
# thêm màu nền cho cửa sổ hiển thị
display_screen.fill((200, 255, 200))
display_screen.blit(img, rect)
# con trỏ sẽ nhấp nháy sau mỗi 0.5 giây
if time.time() % 1 > 0.5:
pygame.draw.rect(display_screen, (255, 0, 0), cursor)
# cập nhật hiển thị
pygame.display.update()
pygame.quit()
Đầu ra:
Ở đây chúng ta sẽ xem cách đọc văn bản bằng bàn phím trong PyGame. Chúng ta sẽ hiển thị văn bản bên trong một hình chữ nhật. Khi di chuột vào hình chữ nhật, màu của hình chữ nhật sẽ thay đổi. Chú thích đã được thêm vào mã để dễ hiểu hơn.
# nhập mô-đun pygame
import pygame
# nhập thư viện sys
import sys
# khởi tạo pygame
pygame.init()
clock = pygame.time.Clock()
# thiết lập kích thước cửa sổ hiển thị
display_screen = pygame.display.set_mode((500, 500))
# thêm kiểu font và kích thước
base_font = pygame.font.Font(None, 40)
# lưu trữ văn bản được nhập từ bàn phím
user_text = ''
# thiết lập tọa độ trái, trên, rộng, cao trong
# Pygame.Rect()
input_rect = pygame.Rect(200, 200, 140, 32)
color_active = pygame.Color("lightskyblue")
color_passive = pygame.Color("gray15")
color = color_passive
active = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# khi chuột chạm vào hình chữ nhật,
# đặt biến active thành True
if event.type == pygame.MOUSEBUTTONDOWN:
if input_rect.collidepoint(event.pos):
active = True
# nếu một phím được nhấn
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_BACKSPACE:
# lưu văn bản trừ ký tự cuối cùng
user_text = user_text[0:-1]
else:
user_text += event.unicode
# tô màu nền cửa sổ hiển thị
display_screen.fill((0, 0, 0))
# thay đổi màu nếu ô nhập đang được chọn
if active:
color = color_active
else:
color = color_passive
# vẽ hình chữ nhật (ô nhập)
pygame.draw.rect(display_screen, color, input_rect)
# render (kết xuất) văn bản
text_surface = base_font.render(user_text, True, (255, 255, 255))
display_screen.blit(text_surface, (input_rect.x + 5, input_rect.y + 5))
# điều chỉnh chiều rộng của ô nhập dựa trên độ dài văn bản
input_rect.w = max(100, text_surface.get_width() + 10)
# cập nhật màn hình
pygame.display.flip()
clock.tick(60)
Đầu ra:
Published on Jul 28, 2025
Sudoku là một trò chơi giải đố sắp xếp số dựa trên logic, kết hợp. Mục tiêu là điền các chữ số vào lưới 9x9 sao cho mỗi cột, mỗi hàng và mỗi ô lưới....
Thuật toán như Tìm kiếm Nhị phân có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toá...
Thuật toán sắp xếp chèn có thể dễ dàng được hiểu bằng cách trực quan hóa. Trong bài viết này, một chương trình trực quan hóa thuật toán sắp xếp ch...
Thuật toán sắp xếp Heap có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toán sắp xếp...
Thuật toán như Tìm kiếm Tam phân có thể được hiểu dễ dàng bằng cách trực quan hóa. Bài viết này trình bày một chương trình trực quan hóa Thuật toá...
Trong bài viết này, chúng ta sẽ xem cách hình dung thuật toán sắp xếp nổi bọt (bubble sort ) bằng PyGame. Cụ thể, khi khởi động ứng dụng PyGame,....