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ẽ thảo luận về cách tạo hộp nhập văn bản bằng PyGame.
Trước khi khởi tạo thư viện pygame, chúng ta cần cài đặt nó. Thư viện này có thể được cài đặt vào hệ thống bằng cách sử dụng công cụ pip do Python cung cấp để cài đặt thư viện. Pygame có thể được cài đặt bằng cách viết những dòng này vào terminal.
Chúng ta có thể cài đặt Pygame bằng lệnh:
pip install pygame
Pygame có thể được sử dụng để tạo hộp nhập văn bản, điều này sẽ được giải thích từng bước chi tiết hơn trong bài viết này.
Sử dụng pygame.init() để khởi tạo tất cả các mô-đun đã nhập.
Đặt kích thước màn hình.
Đặt phông chữ của văn bản mà người dùng sẽ nhập.
Tạo điều kiện theo khóa của người dùng.
Ngoài ra, hãy khai báo hai biến chứa tên màu sẽ được sử dụng để nhập màu.
Ngoài ra, lưu trữ dữ liệu đầu vào trong một biến để hiển thị trên màn hình.
Bây giờ hãy vẽ hình chữ nhật và truyền đối số vào đó trên màn hình.
Ngoài ra, hãy thiết lập kích thước màn hình cần hiển thị.
Sử dụng clock.tick() có nghĩa là cứ mỗi giây thì phải truyền tối đa một khung hình nhất định.
Chức năng | Sự miêu tả |
---|---|
clock.tick() | Nó được sử dụng để làm mới khung hình trong giây nhất định |
pygame.exit() | Nó được sử dụng để thoát khỏi trò chơi |
pygame.init() | Nó được sử dụng để khởi tạo tất cả các mô-đun được nhập |
pygame.font.Font | Tạo một đối tượng Phông chữ mới từ một tệp |
pygame.display.flip() | Nó sẽ chỉ cập nhật một phần của màn hình thành bản cập nhật chứ không phải toàn bộ khu vực |
screen.fill((r, g, b, a)) | Nó sẽ thiết lập màu nền của màn hình. Phạm vi màu nằm trong khoảng từ 0 đến 255. |
# nhập mô-đun sys
import pygame
import sys
# pygame.init() sẽ khởi tạo tất cả các mô-đun được nhập
pygame.init()
clock = pygame.time.Clock()
# tạo cửa sổ hiển thị trên màn hình
screen = pygame.display.set_mode([600, 500])
# phông chữ cơ bản cho văn bản người dùng nhập
base_font = pygame.font.Font(None, 32)
user_text = ''
# tạo ô nhập (rectangle)
input_rect = pygame.Rect(200, 200, 140, 32)
# color_active là màu (lightskyblue3) sẽ được kích hoạt khi người dùng click vào ô nhập
color_active = pygame.Color('lightskyblue3')
# color_passive là màu (chartreuse4) mặc định của ô nhập
color_passive = pygame.Color('chartreuse4')
color = color_passive
active = False
while True:
for event in pygame.event.get():
# nếu người dùng nhấn nút QUIT thì đóng màn hình
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# kiểm tra nếu người dùng click chuột
if event.type == pygame.MOUSEBUTTONDOWN:
# nếu click nằm trong ô nhập thì kích hoạt
if input_rect.collidepoint(event.pos):
active = True
else:
active = False
# xử lý khi người dùng nhập bàn phím
if event.type == pygame.KEYDOWN:
# kiểm tra nếu nhấn phím backspace
if event.key == pygame.K_BACKSPACE:
# lấy văn bản từ đầu đến -1 ký tự cuối
user_text = user_text[:-1]
# chuẩn Unicode được dùng để ghép chuỗi
else:
user_text += event.unicode
# đặt màu nền cho màn hình
screen.fill((255, 255, 255))
# thay đổi màu ô nhập tùy theo trạng thái
if active:
color = color_active
else:
color = color_passive
# vẽ ô nhập (hình chữ nhật) với màu tương ứng
pygame.draw.rect(screen, color, input_rect)
# hiển thị văn bản người dùng đã nhập
text_surface = base_font.render(user_text, True, (255, 255, 255))
# hiển thị văn bản tại vị trí cụ thể trên màn hình
screen.blit(text_surface, (input_rect.x+5, input_rect.y+5))
# điều chỉnh chiều rộng ô nhập để phù hợp với văn bản
input_rect.w = max(100, text_surface.get_width()+10)
# cập nhật phần hiển thị bị thay đổi, không cập nhật toàn màn hình
pygame.display.flip()
# đảm bảo tốc độ 60 khung hình/giây
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,....