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
Khi sử dụng pygame, đôi khi chúng ta cần thực hiện một số thao tác nhất định liên quan đến việc sử dụng thời gian. Chẳng hạn như tìm thời gian chương trình đã chạy, tạm dừng chương trình trong một khoảng thời gian, v.v. Đối với các thao tác này, chúng ta cần sử dụng các phương thức thời gian của pygame. Trong bài viết này, chúng ta sẽ thảo luận về các phương thức khác nhau có thể được sử dụng để thực hiện các thao tác này.
Chức năng mà chúng ta sẽ thảo luận là:-
pygame.time.wait
pygame.time.get_ticks
pygame.time.delay
pygame.time.Clock
Hàm này được dùng để tạm dừng chương trình đang chạy trong vài giây. Thời gian tính bằng mili giây được sử dụng làm tham số. Ví dụ, để minh họa hàm này, chúng ta sẽ viết một chương trình đơn giản để logo geeksforgeeks chỉ xuất hiện trên màn hình sau 5 giây. Mã cho chương trình này sẽ là:
# nhập mô-đun pygame
import pygame
# nhập mô-đun sys
import sys
# khởi tạo pygame
pygame.init()
# tạo cửa sổ hiển thị
display = pygame.display.set_mode((500, 500))
# tạo surface cho hình ảnh
image = pygame.image.load('gfg_logo.png')
# hiển thị hình ảnh lên cửa sổ tại vị trí (100, 100)
display.blit(image, (100, 100))
# cho chương trình tạm dừng trong 5000 mili giây (5 giây)
pygame.time.wait(5000)
# tạo vòng lặp chạy liên tục
while True:
# tạo vòng lặp kiểm tra các sự kiện đang xảy ra
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# cập nhật nội dung cửa sổ hiển thị
pygame.display.flip()
Đầu ra:
Đầu ra của lệnh này là tập lệnh sẽ đợi trong 5 giây rồi cập nhật màn hình để hiển thị logo geeksforgeeks.
Độ chính xác của nó kém hơn một chút so với pygame.time.delay mà chúng ta sẽ thảo luận sau trong bài viết này vì nó sử dụng chế độ ngủ nhưng chế độ kia sử dụng bộ xử lý.
pygame.time.get_ticks
Hàm này cung cấp thời gian đã chạy tính bằng mili giây. Ví dụ, nếu chúng ta muốn viết một đoạn mã đơn giản để minh họa ví dụ này, nó có thể là:
# nhập mô-đun pygame
import pygame
# khởi tạo pygame
pygame.init()
# tạo một biến
i = 0
while i < 5:
# lưu thời gian vào biến ticks (tính bằng mili giây kể từ khi pygame.init() được gọi)
ticks = pygame.time.get_ticks()
# in giá trị của biến ticks ra màn hình
print(ticks)
# tăng giá trị của i lên 1
i = i + 1
# tạm dừng chương trình trong 1 giây
pygame.time.wait(1000)
Đầu ra:
Thời gian được in ra cho mỗi lần lặp, bao gồm cả thời gian chúng ta tạm dừng tập lệnh ở mỗi lần lặp.
Hàm này hoạt động tương tự như hàm pygame.time.wait, điểm khác biệt là hàm này sẽ sử dụng bộ xử lý (thay vì ngủ) để làm cho độ trễ chính xác hơn. Mã ví dụ có thể được viết tương tự như hàm pygame.time.wait bằng cách chỉ cần thay đổi tên:
# nhập mô-đun pygame
import pygame
# nhập mô-đun sys
import sys
# khởi tạo pygame
pygame.init()
# tạo cửa sổ hiển thị
display = pygame.display.set_mode((500, 500))
# tạo surface cho hình ảnh
image = pygame.image.load('gfg_logo.png')
# đưa surface hình ảnh lên surface hiển thị
display.blit(image, (100, 100))
# tạm dừng chương trình trong 5000 mili giây (5 giây)
pygame.time.delay(5000)
# tạo vòng lặp chạy liên tục
while True:
# tạo vòng lặp để kiểm tra các sự kiện đang xảy ra
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# cập nhật nội dung hiển thị
pygame.display.flip()
Đầu ra:
Hàm này được sử dụng để tạo một đối tượng đồng hồ dùng để theo dõi thời gian. Các phương thức khác nhau của đối tượng đồng hồ như sau:
tick() : Phương thức này nên được gọi một lần cho mỗi khung hình. Nó sẽ tính toán số mili giây đã trôi qua kể từ lần gọi trước đó. Nếu bạn truyền vào đối số tốc độ khung hình tùy chọn, hàm sẽ trì hoãn để giữ cho trò chơi chạy chậm hơn số khung hình được chỉ định mỗi giây. Ví dụ: nếu chúng ta truyền vào đối số 10, chương trình sẽ không bao giờ chạy ở tốc độ hơn 10 khung hình mỗi giây.
get_time(): Được sử dụng để lấy số mili giây được sử dụng giữa hai tick().
get_fps() : cung cấp thông tin liên quan đến tốc độ khung hình. Nó trả về kết quả dưới dạng giá trị dấu phẩy động.
Một chương trình đơn giản để chứng minh chức năng này có thể là:
# nhập mô-đun pygame
import pygame
# khởi tạo pygame
pygame.init()
# khai báo biến i với giá trị ban đầu là 0
i = 0
# tạo một đối tượng đồng hồ (Clock)
clock = pygame.time.Clock()
# tạo vòng lặp lặp lại 5 lần
while i < 5:
# đặt giới hạn tốc độ khung hình tối đa là 1 lần mỗi giây
clock.tick(1)
# in ra thời gian đã sử dụng ở lần tick trước (tính bằng mili giây)
print(clock.get_time())
# in ra tốc độ khung hình được tính toán (frame per second)
print(clock.get_fps())
i = i + 1
Đầu ra:
Khi chúng ta truyền 1 vào phương pháp tích tắc, nó sẽ đặt fps tối đa thành 1. Điều này làm cho thời gian giữa mỗi khung hình gần bằng 1000 mili giây.
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,....