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à điền các chữ số vào...
Writer CodeGym
Đăng ngày 28/07/2025
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 hoặc sprite khác nhau. Pygame không có thiết kế bố cục tích hợp hay bất kỳ hệ thống giao diện người dùng (UI) nào, nghĩa là không có cách nào dễ dàng để tạo giao diện người dùng (UI) hoặc màn chơi cho trò chơi. Cách duy nhất để tạo màn chơi hoặc các menu khác nhau trong Pygame là sử dụng các hàm.
Sử dụng các hàm như menu
Các hàm trong Pygame là một cách để chứa các menu hoặc cấp độ khác nhau bằng cách xác định loại sự kiện trong mỗi hàm, sau đó gọi các hàm từ hàm chứa tương ứng.
Ví dụ, hàm trò chơi sẽ được gọi nếu người chơi nhấn nút "Play" trên menu Bắt đầu. Vì vậy, hàm menu Bắt đầu sẽ trở thành hàm chứa cho hàm trò chơi. Điều quan trọng cần lưu ý là hàm bắt đầu không thể được gọi trực tiếp từ hàm trò chơi. Nếu trò chơi có nhiều cấp độ mở khóa khác nhau, thì cấp độ trước đó sẽ trở thành hàm chứa cho cấp độ tiếp theo.
Mã mẫu cho trò chơi có chứa menu bắt đầu
Chương trình Python để minh họa Menu và Cấp độ
import pygame
import sys
# khởi tạo pygame
pygame.init()
# độ phân giải màn hình
res = (720,720)
# mở cửa sổ game
screen = pygame.display.set_mode(res)
# màu trắng
color = (255,255,255)
# màu sáng của nút
color_light = (170,170,170)
# màu tối của nút
color_dark = (100,100,100)
# lưu chiều rộng của màn hình vào biến
width = screen.get_width()
# lưu chiều cao của màn hình vào biến
height = screen.get_height()
# định nghĩa font chữ
smallfont = pygame.font.SysFont('Corbel',35)
# tạo text hiển thị với font đã định nghĩa
text = smallfont.render('quit' , True , color)
while True:
for ev in pygame.event.get():
if ev.type == pygame.QUIT:
pygame.quit()
# kiểm tra nếu chuột được nhấn
if ev.type == pygame.MOUSEBUTTONDOWN:
# nếu chuột nhấn vào nút thì thoát game
if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
pygame.quit()
# tô màu nền cho màn hình
screen.fill((60,25,60))
# lấy tọa độ chuột và lưu vào biến dưới dạng tuple
mouse = pygame.mouse.get_pos()
# nếu chuột di chuyển vào nút thì đổi sang màu sáng hơn
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])
# vẽ chữ lên trên nút
screen.blit(text , (width/2+50,height/2))
# cập nhật khung hình trò chơi
pygame.display.update() Đầu ra:
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...
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...
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ộ...