Vẽ đối tượng và hình dạng trong Pygame

PyGame là một thư viện phát triển trò chơi mạnh mẽ và phổ biến dành cho Python. Nó cung cấp một bộ công cụ và chức năng giúp tạo trò chơi và các ứng dụng tương tác khác dễ dàng hơn. Một tính năng hữu ích của PyGame là khả năng vẽ các đối tượng và hình dạng.


Mô-đun pygame.draw

Trong PyGame, việc vẽ các đối tượng và hình dạng là một quy trình đơn giản. Bạn có thể dùng pygame.draw mô-đun để vẽ các hình dạng như hình chữ nhật, hình tròn, đường thẳng, v.v.

Trước khi bắt đầu, đả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 PyGame mô-đun:

 pip install pygame 

Vẽ các hình cơ bản

Các pygame.draw mô-đun 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ó.

  • thẳng (): Bạn có thể vẽ hình chữ nhật bằng chức năng này. Đây là một trong những hình dạng được sử dụng phổ biến nhất trong trò chơi. 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(surface, color, rect, width) 
  • vòng tròn(): Vẽ một vòng 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(surface, color, pos, radius) 
  • đa giác(): 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(surface, color, points, width)  
  • đường kẻ(): Vẽ đường thẳng. Nó có bốn tham số: bề mặt, màu sắc, start_pos và end_pos.
     pygame.draw.line(surface, color, start_pos, end_pos)  

Bạn có thể tìm thấy danh sách đầy đủ các hàm 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 dạng 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.

  • vòng cung(): Chức năng này vẽ một vòng cung trên một bề mặt. Một vòng cung là một phần của một vòng tròn. Nó có sáu tham số: bề mặt, màu sắc, rect, start_angle, end_angle 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(surface, color, rect, start_angle, end_angle, width) 
  • hình elip(): 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, hình chữ nhật và chiều rộng.
     pygame.draw.ellipse(surface, color, rect, width) 
  • aaline(): Sử dụng để vẽ một đường khử răng cưa duy nhất 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. Phải mất bốn tham số phản ánh đường kẻ() chức năng: bề mặt, màu sắc, start_pos và end_pos.
     pygame.draw.aaline(surface, color, start_pos, end_pos)  

Tạo các hình dạng 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 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 dạng bên trong có thể là bất kỳ hình dạng cơ bản nào, chẳng hạn như hình chữ nhật hoặc hình tròn.

Ví dụ, để vẽ một hình chữ nhật bên trong một hình tròn, bạn có thể sử dụng pygame.draw.circle() chức năng để vẽ vòng tròn, và sau đó sử dụng pygame.draw.rect() để vẽ hình chữ nhật trên nó.

Đây là đoạn mã ví dụ minh họa cách vẽ hình chữ nhật bên trong hình tròn:

 import pygame

pygame.init()



window = pygame.display.set_mode((800, 600))



circle_rect = pygame.draw.circle(window, (255, 255, 255), (400, 300), 100)



rectangle_surface = pygame.Surface((50, 50))
rectangle_surface.set_colorkey((0, 0, 0))



pygame.draw.rect(rectangle_surface, (255, 0, 0), (0, 0, 50, 50))



window.blit(rectangle_surface, (375, 275))



while True:
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()


    
    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 dạng và thành phần trò chơi phức tạp hơn bằng cách kết hợp nhiều hình dạng.

trò chơi với một hình chữ nhật màu đỏ được vẽ bên trong một vòng tròn màu trắng

vẽ hình ảnh

PyGame cũng cho phép bạn vẽ hình ảnh. Bạn có thể dùng pygame.image.load() chức năng tải một hình ảnh từ một tập tin và pygame.image.blit() Chức năng vẽ hình ảnh trên màn hình.

Cú pháp cho pygame.image.load() trông như thế này:

 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 xén.

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 dạng. Ví dụ, bạn có thể sử dụng pygame.mouse.get_pos() chức năng để có được vị trí chuột và pygame.mouse.get_ép() chức năng lấy trạng thái 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 

pygame.init()



window = pygame.display.set_mode((800, 600))



while True:
    
    mouse_position = pygame.mouse.get_pos()


    
    mouse_pressed = pygame.mouse.get_pressed()


    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()


    
    if mouse_pressed[0] == 1:
        pygame.draw.circle(window, (255, 0, 0), mouse_position, 20)


    
    pygame.display.update()

Dưới đây là đầu ra:

màn hình trò chơi với các vòng tròn màu đỏ được vẽ bằng chuột

Dễ dàng tạo nhân vật trò chơi trong PyGame

PyGame cũng cung cấp một bộ công cụ mạnh mẽ để dễ dàng tạo các nhân vật và đối tượng trò chơi. với pygame.draw mô-đun, bạn có thể dễ dàng tạo các họa tiết mà bạn có thể sử dụng trong trò chơi của mình. Bạn có thể dễ dàng tạo nhân vật, đồ vật và các yếu tố trò chơi khác.

Previous Post
Next Post

post written by: