Mô-đun pygame.draw
Trong PyGame, việc vẽ các hình và đối tượng là một quy trình đơn giản. Bạn có thể sử dụng mô-đun pygame.draw để vẽ các hình như hình chữ nhật, hình tròn, đường thẳng, v.v.
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt pip trên thiết bị của mình, sau đó sử dụng lệnh này để cài đặt mô-đun PyGame:
pip install pygame
Vẽ các hình cơ bản
Mô -đun pygame.draw cung cấp một số chức năng cho phép bạn vẽ các hình cơ bản. Mỗi chức năng có một bộ tham số để xác định hình dạng và vị trí của nó.
- rect(): Bạn có thể vẽ một hình chữ nhật bằng chức năng này. Đây là một trong những hình phổ biến nhất trong game. Bạn có thể tạo bệ, tường và các đối tượng khác bằng hình chữ nhật. Hàm nhận bốn tham số: bề_mặt (bề mặt để vẽ hình chữ nhật), màu_sắc, rect (một đối tượng Rect) và chiều_rộng (độ dày của đường kẻ).
pygame.draw.rect(bề_mặt, màu_sắc, rect, chiều_rộng)
- circle(): Vẽ hình tròn. Nó có bốn tham số: bề_mặt, màu sắc, vị trí (tâm của vòng tròn) và bán kính.
pygame.draw.circle(bề_mặt, màu_sắc, pos, bán_kính)
- polygon(): Vẽ một đa giác. Nó nhận bốn tham số: bề mặt, màu sắc, điểm (danh sách các điểm xác định hình dạng của đa giác) và chiều rộng.
pygame.draw.polygon(bbề_mặt, màu_sắc, điểm, chiều_rộng)
- line(): Vẽ một đường thẳng. Nó có bốn tham số: bề mặt, màu sắc, start_pos và end_pos.
pygame.draw.line(bề_mặt, màu_sắc, start_pos, end_pos)
Bạn có thể tìm thấy danh sách đầy đủ các chức năng và tham số của chúng trên tài liệu chính thức của PyGame dành cho mô-đun vẽ.
Vẽ hình phức tạp
Ngoài các hình cơ bản, PyGame cũng cho phép bạn vẽ các hình phức tạp như hình cung, hình elip và đường aalines.
- arc(): Chức năng này vẽ một vòng cung (một phần của một vòng tròn) trên một bề mặt. Nó có sáu tham số: bề_mặt, màu_sắc rect, góc_bắt_đầu, góc_kết_thúc và chiều_rộng. Chỉ định các góc theo độ, với 0 độ chỉ về bên phải và tăng dần theo chiều kim đồng hồ. Tham số width chỉ định độ dày của cung.
pygame.draw.arc(bề_mặt, màu_sắc, rect, góc_bắt_đầu, góc_kết_thúc, chiều_rộng)
- ellipse(): Vẽ một hình elip trên một bề mặt. Một hình elip là một vòng tròn kéo dài. Nó có bốn tham số: bề_mặt, màu_sắc, rect và chiều_rộng.
pygame.draw.ellipse(bề_mặt, màu_sắc, rect, chiều_rộng)
- aaline(): Sử dụng để vẽ một đường khử răng cưa trên một bề mặt. Khử răng cưa là một kỹ thuật được sử dụng để làm mịn các cạnh của hình dạng, để nó trông tự nhiên hơn. Nó có bốn tham số phản ánh hàm line(): bề_mặt, màu_sắc, start_pos và end_pos.
pygame.draw.aaline(bề_mặt, màu_sắc, start_pos, end_pos)
Tạo các hình lồng nhau trong PyGame
Một tính năng thú vị khác của PyGame là khả năng vẽ các hình bên trong một hình khác. Bạn có thể làm như vậy bằng cách sử dụng kết hợp các chức năng vẽ hình cơ bản trong PyGame.
Để vẽ một hình bên trong một hình khác, trước tiên bạn có thể vẽ hình bên trong, sau đó vẽ hình bên ngoài lên trên hình đó. Hình bên trong có thể là bất kỳ hình cơ bản nào, chẳng hạn như hình chữ nhật hoặc hình tròn.
Ví dụ: để vẽ hình chữ nhật bên trong hình tròn, bạn có thể sử dụng hàm pygame.draw.circle() để vẽ hình tròn, sau đó sử dụng hàm pygame.draw.rect() để vẽ hình chữ nhật bên trên hình tròn đó.
Bạn có thể tìm thấy các mẫu mã sau trong repo GitHub này .
Đây là đoạn code ví dụ minh họa cách vẽ hình chữ nhật bên trong hình tròn:
import pygame
# Initialize pygame
pygame.init()
# Create a window
window = pygame.display.set_mode((800, 600))
# Create a circle
circle_rect = pygame.draw.circle(window, (255, 255, 255), (400, 300), 100)
# Create a surface for the rectangle
rectangle_surface = pygame.Surface((50, 50))
rectangle_surface.set_colorkey((0, 0, 0))
# Draw the rectangle on the surface
pygame.draw.rect(rectangle_surface, (255, 0, 0), (0, 0, 50, 50))
# Blit the surface onto the circle
window.blit(rectangle_surface, (375, 275))
# Main loop
while True:
# Quitting the game
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# Update the display
pygame.display.update()
Điều này tạo ra hiệu ứng của một hình chữ nhật bên trong một hình tròn. Bạn có thể sử dụng kỹ thuật này để tạo các hình và thành phần game phức tạp hơn bằng cách kết hợp nhiều hình.
Vẽ hình ảnh
PyGame cũng cho phép bạn vẽ hình ảnh. Bạn có thể sử dụng hàm pygame.image.load() để tải hình ảnh từ một tệp và hàm pygame.image.blit() để vẽ hình ảnh trên màn hình.
Cú pháp của pygame.image.load() như sau:
pygame.image.load(filename)
Và đây là cú pháp cho pygame.image.blit() :
pygame.image.blit(image, rect)
Ngoài việc tải và vẽ hình ảnh, PyGame còn cung cấp một số chức năng khác liên quan đến hình ảnh. Các chức năng này cho phép bạn thao tác với hình ảnh theo nhiều cách khác nhau, chẳng hạn như chia tỷ lệ, xoay, lật và cắt.
Thêm tính năng nâng cao
PyGame cũng cung cấp một số tính năng nâng cao để vẽ các đối tượng và hình. Ví dụ: bạn có thể sử dụng hàm pygame.mouse.get_pos() để lấy vị trí chuột và hàm pygame.mouse.get_press() để lấy trạng thái của nút chuột. Với các chức năng này, bạn có thể tạo tính năng nhấp để vẽ cho phép bạn vẽ các hình bằng cách nhấp chuột.
import pygame
# Initialize pygame
pygame.init()
# Create a window
window = pygame.display.set_mode((800, 600))
# Main loop
while True:
# Get the mouse position
mouse_position = pygame.mouse.get_pos()
# Get the mouse button state
mouse_pressed = pygame.mouse.get_pressed()
# Quitting the game
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# Drawing a circle when mouse is pressed
if mouse_pressed[0] == 1:
pygame.draw.circle(window, (255, 0, 0), mouse_position, 20)
# Update the display
pygame.display.update()
Dưới đây là đầu ra:
Tìm hiểu ngay chương trình học công nghệ thông tin trực tuyến tại FUNiX ở đây:
Vân Nguyễn
Dịch từ: https://www.makeuseof.com/pygame-drawing-objects-shapes/
Bình luận (0
)