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 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, chúng ta có thể thấy các thanh chưa được sắp xếp với các chiều cao khác nhau. Khi nhấn phím cách, nó bắt đầu được sắp xếp theo kiểu sắp xếp nổi bọt, nghĩa là sau mỗi lần lặp, phần tử có giá trị lớn nhất sẽ xuất hiện cuối cùng. Bubble Sort là một thuật toán đơn giản được sử dụng để sắp xếp một tập hợp n phần tử cho trước dưới dạng một mảng với n số phần tử. Bubble Sort so sánh tất cả các phần tử từng cái một và sắp xếp chúng dựa trên giá trị của chúng.
Các bước triển khai: 1. Tạo một cửa sổ chính 2. Tô màu đen cho cửa sổ chính 3. Tạo một phương thức để hiển thị danh sách các thanh với khoảng cách cụ thể giữa chúng 4. Nhận đầu vào phím từ người dùng 5. Nếu nhấn phím cách, bắt đầu quá trình sắp xếp 6. Triển khai thuật toán sắp xếp nổi bọt trên danh sách 7. Sau mỗi lần lặp lại bên trong, tô màu đen cho màn hình và gọi phương thức show để hiển thị danh sách đã lặp lại dưới dạng thanh.
Dưới đây là cách thực hiện
# nhập pygame
import pygame
pygame.init()
# đặt kích thước cửa sổ
win = pygame.display.set_mode((500, 400))
# đặt tiêu đề cho cửa sổ
pygame.display.set_caption("Bubble sort")
# vị trí ban đầu
x = 40
y = 40
# chiều rộng của mỗi cột
width = 20
# chiều cao của mỗi cột (dữ liệu cần sắp xếp)
height = [200, 50, 130, 90, 250, 61, 110,
88, 33, 80, 70, 159, 180, 20]
run = True
# hàm hiển thị danh sách chiều cao
def show(height):
# vòng lặp duyệt qua từng phần tử trong danh sách
for i in range(len(height)):
# vẽ từng cột với khoảng cách tương ứng
pygame.draw.rect(win, (255, 0, 0), (x + 30 * i, y, width, height[i]))
# vòng lặp vô hạn
while run:
# cờ thực thi để bắt đầu sắp xếp
execute = False
# độ trễ thời gian
pygame.time.delay(10)
# lấy các phím được nhấn
keys = pygame.key.get_pressed()
# duyệt các sự kiện
for event in pygame.event.get():
# nếu sự kiện là thoát
if event.type == pygame.QUIT:
# đặt run = False để thoát khỏi vòng lặp while
run = False
# nếu phím cách được nhấn
if keys[pygame.K_SPACE]:
# đặt cờ thực thi thành True
execute = True
# kiểm tra nếu cờ thực thi là False
if execute == False:
# tô màu đen cho cửa sổ
win.fill((0, 0, 0))
# gọi hàm hiển thị danh sách các phần tử
show(height)
# cập nhật cửa sổ
pygame.display.update()
# nếu cờ thực thi là True
else:
# bắt đầu sắp xếp theo thuật toán bubble sort
for i in range(len(height) - 1):
# sau mỗi vòng lặp, phần tử lớn nhất sẽ được đẩy về cuối
for j in range(len(height) - i - 1):
# nếu phần tử hiện tại lớn hơn phần tử kế tiếp
if height[j] > height[j + 1]:
# lưu vào biến tạm
# và hoán đổi hai phần tử
t = height[j]
height[j] = height[j + 1]
height[j + 1] = t
# tô màu đen cho cửa sổ
win.fill((0, 0, 0))
# gọi hàm show để hiển thị danh sách
show(height)
# tạo độ trễ thời gian
pygame.time.delay(50)
# cập nhật hiển thị
pygame.display.update()
# thoát khỏi cửa sổ chính
pygame.quit()
Đầ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á...
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 sprite khác nhau....