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ẽ tìm hiểu cách Xoay và Thu phóng hình ảnh. Thu phóng hình ảnh là việc thay đổi kích thước của hình ảnh gốc, còn Xoay hình ảnh là việc tắt hình ảnh theo một góc nhất định. Phép quay trên mặt phẳng tọa độ được thực hiện ngược chiều kim đồng hồ. Hãy cùng tìm hiểu các phương thức được sử dụng và mã lệnh đầy đủ để thực hiện các tác vụ này.
Để thay đổi tỷ lệ hình ảnh, chúng ta sử dụng phương thức pygame.transform.scale(image, DEFAULT_IMAGE_SIZE) trong đó chúng ta truyền hình ảnh mà chúng ta sẽ thay đổi tỷ lệ và kích thước hình ảnh mặc định mà chúng ta sẽ đặt thủ công theo nhu cầu của mình.
Ví dụ:
Hình ảnh được sử dụng:
# Import thư viện pygame
import pygame
# Khởi tạo pygame
pygame.init()
# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)
# Đồng hồ (dùng để giới hạn tốc độ khung hình)
clock = pygame.time.Clock()
# Tải hình ảnh
image = pygame.image.load('gfg.png')
# Thiết lập kích thước mặc định cho ảnh
DEFAULT_IMAGE_SIZE = (200, 200)
# Thay đổi kích thước ảnh theo kích thước mong muốn
image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)
# Thiết lập vị trí mặc định để hiển thị ảnh
DEFAULT_IMAGE_POSITION = (200, 200)
# Điều kiện chạy vòng lặp
running = False
# Vòng lặp sự kiện
while not running:
# Sự kiện đóng cửa sổ
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = True
# Màu nền của cửa sổ (đen)
screen.fill((0, 0, 0))
# Hiển thị hình ảnh lên màn hình
screen.blit(image, DEFAULT_IMAGE_POSITION)
# Cập nhật nội dung hiển thị và giới hạn FPS
pygame.display.flip()
clock.tick(30)
Đầu ra:
Xoay hình ảnh
Để xoay hình ảnh, chúng ta sử dụng phương thức pygame.transform.rotate(image, degree) trong đó chúng ta truyền vào hình ảnh mà chúng ta sẽ xoay và mức độ xoay sẽ được thực hiện.
Ví dụ:
# Import thư viện pygame
import pygame
# Khởi tạo pygame
pygame.init()
# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)
# Đồng hồ (để giới hạn tốc độ khung hình)
clock = pygame.time.Clock()
# Tải ảnh
image = pygame.image.load('gfg.png')
# Thiết lập kích thước cho ảnh (nếu cần)
DEFAULT_IMAGE_SIZE = (200, 200)
# (Tùy chọn) Bạn có thể scale ảnh nếu cần, ví dụ:
# image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)
# Xoay ảnh 180 độ
image = pygame.transform.rotate(image, 180)
# Vị trí mặc định để hiển thị ảnh
DEFAULT_IMAGE_POSITION = (200, 200)
# Điều kiện chạy vòng lặp (cần sửa lại)
running = False
# Vòng lặp sự kiện
while not running: # ⚠️ Câu này gây hiểu nhầm, vì `not running` là `True` => chạy 1 lần rồi thoát
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = True
# Tô màu nền đen cho màn hình
screen.fill((0, 0, 0))
# Vẽ ảnh đã xoay lên màn hình
screen.blit(image, DEFAULT_IMAGE_POSITION)
# Cập nhật màn hình
pygame.display.flip()
# Giới hạn tốc độ khung hình 30 FPS
clock.tick(30)
Đầu ra:
Xoay và thay đổi kích thước hình ảnh
Hãy cùng xem cách thực hiện việc điều chỉnh tỷ lệ và xoay hình ảnh cho sẵn. Chúng ta sẽ thiết lập kích thước hình ảnh mặc định phù hợp và vị trí hình ảnh mặc định mà chúng ta muốn hiển thị trên màn hình cửa sổ. Các phương pháp tương tự đã được giải thích ở trên sẽ được sử dụng để điều chỉnh tỷ lệ và xoay hình ảnh.
Ví dụ:
# Import thư viện pygame
import pygame
# Khởi tạo pygame
pygame.init()
# Thiết lập kích thước cửa sổ
size = width, height = 600, 600
screen = pygame.display.set_mode(size)
# Đồng hồ để điều chỉnh tốc độ khung hình
clock = pygame.time.Clock()
# Tải ảnh từ file
image = pygame.image.load('gfg.png')
# Thiết lập kích thước mặc định cho ảnh
DEFAULT_IMAGE_SIZE = (200, 200)
# Thay đổi kích thước ảnh theo kích thước mong muốn
image = pygame.transform.scale(image, DEFAULT_IMAGE_SIZE)
# Xoay ảnh theo một góc bất kỳ (ở đây là 90 độ)
image = pygame.transform.rotate(image, 90)
# Vị trí mặc định để hiển thị ảnh trên màn hình
DEFAULT_IMAGE_POSITION = (200, 200)
# Cờ điều kiện để điều khiển vòng lặp
running = False
# Vòng lặp sự kiện
while not running:
# Duyệt qua các sự kiện
for event in pygame.event.get():
# Nếu người dùng đóng cửa sổ
if event.type == pygame.QUIT:
running = True
# Tô màu nền đen cho cửa sổ
screen.fill((0, 0, 0))
# Vẽ ảnh đã xoay lên màn hình tại vị trí đã định
screen.blit(image, DEFAULT_IMAGE_POSITION)
# Cập nhật nội dung cửa sổ sau mỗi khung hình
pygame.display.flip()
# Giới hạn tốc độ khung hình (30 khung hình/giây)
clock.tick(30)
Đầ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,....