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
Pygame là một thư viện Python chuyên dụng để thiết kế và xây dựng trò chơi. Pygame chỉ hỗ trợ các trò chơi 2D được xây dựng bằng các hình dạng/hình ảnh khác nhau được gọi là sprite. Pygame không thực sự phù hợp để thiết kế trò chơi vì nó rất phức tạp khi sử dụng và thiếu giao diện người dùng đồ họa (GUI) chuẩn mực như Unity Gaming Engine, nhưng chắc chắn nó sẽ xây dựng logic cho các dự án lớn hơn.
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.
pip install pygame
Trò chơi phải có các nút tương tác có thể điều khiển các sự kiện khác nhau trong trò chơi để làm cho trò chơi được kiểm soát nhiều hơn và để thêm một GUI phù hợp vào đó. Những nút này có thể được tạo trong pygame bằng cách tạo một hình chữ nhật trên màn hình và sau đó chồng văn bản chỉ định lên đó. Đối với điều này, chúng ta sẽ sử dụng nhiều hàm khác nhau như draw.rect(), screen.blit() v.v. Để thêm phần sinh động cho trò chơi, chúng ta có thể thay đổi màu của nút khi chuột di chuột qua nút đó. Điều này có thể được thực hiện bằng cách sử dụng một hàm cập nhật vị trí x và y của con trỏ chuột và lưu trữ nó dưới dạng một bộ trong một biến. Sau đó, chúng ta có thể đặt ranh giới của hình chữ nhật thành các biến tương ứng và kiểm tra xem chuột có nằm trong các ranh giới đó hay không, nếu có thì màu của khối sẽ được thay đổi thành màu sáng hơn để biểu thị rằng nút có thể tương tác được. Dưới đây là phần triển khai.
import pygame
import sys
# khởi tạo pygame
pygame.init()
# độ phân giải màn hình
res = (720, 720)
screen = pygame.display.set_mode(res)
# các màu sắc
white = (255, 255, 255)
color_light = (170, 170, 170) # màu sáng của nút
color_dark = (100, 100, 100) # màu tối của nút
# kích thước màn hình
width = screen.get_width()
height = screen.get_height()
# thiết lập font chữ
smallfont = pygame.font.SysFont('Corbel', 35)
text = smallfont.render('quit', True, white) # render chữ “quit” với màu trắng
while True:
# lấy vị trí con trỏ chuột trước
mouse = pygame.mouse.get_pos()
for ev in pygame.event.get():
if ev.type == pygame.QUIT:
pygame.quit()
sys.exit() # thoát chương trình hoàn toàn
# nếu chuột được nhấn
if ev.type == pygame.MOUSEBUTTONDOWN:
# nếu chuột được nhấn bên trong vùng nút
if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
pygame.quit()
sys.exit()
# tô màu nền cho màn hình
screen.fill((60, 25, 60))
# nếu chuột di chuyển vào vùng nút, chuyển sang màu sáng
if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
pygame.draw.rect(screen, color_light, [width/2, height/2, 140, 40])
else:
pygame.draw.rect(screen, color_dark, [width/2, height/2, 140, 40])
# hiển thị chữ "quit" lên nút
screen.blit(text, (width/2 + 50, height/2))
# cập nhật màn hình mỗi khung hình
pygame.display.update()
Đầ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,....