Làm thế nào để tạo Nút trong trò chơi bằng PyGame?

Category: Pygame

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 hình dạng/hình ảnh khác nhau được gọi là sprite. Pygame không thực sự phù hợp để thiết kế trò chơi vì nó rất phức tạp khi sử dụng và thiếu giao diện người dùng đồ họa (GUI) chuẩn mực như Unity Gaming Engine, nhưng chắc chắn nó sẽ xây dựng logic cho các dự án lớn hơn.

Cài đặt

Trước khi khởi tạo thư viện pygame, chúng ta cần cài đặt nó. Thư viện này có thể được cài đặt vào hệ thống bằng cách sử dụng công cụ pip do Python cung cấp để cài đặt thư viện. Pygame có thể được cài đặt bằng cách viết những dòng này vào terminal.

pip install pygame

Tạo các nút tương tác bằng pygame

Trò chơi phải có các nút tương tác có thể điều khiển các sự kiện khác nhau trong trò chơi để làm cho trò chơi được kiểm soát nhiều hơn và để thêm một GUI phù hợp vào đó. Những nút này có thể được tạo trong pygame bằng cách tạo một hình chữ nhật trên màn hình và sau đó chồng văn bản chỉ định lên đó. Đối với điều này, chúng ta sẽ sử dụng nhiều hàm khác nhau như draw.rect(), screen.blit() v.v. Để thêm phần sinh động cho trò chơi, chúng ta có thể thay đổi màu của nút khi chuột di chuột qua nút đó. Điều này có thể được thực hiện bằng cách sử dụng một hàm cập nhật vị trí x và y của con trỏ chuột và lưu trữ nó dưới dạng một bộ trong một biến. Sau đó, chúng ta có thể đặt ranh giới của hình chữ nhật thành các biến tương ứng và kiểm tra xem chuột có nằm trong các ranh giới đó hay không, nếu có thì màu của khối sẽ được thay đổi thành màu sáng hơn để biểu thị rằng nút có thể tương tác được. Dưới đây là phần triển khai.

import pygame
import sys

# khởi tạo pygame
pygame.init()

# độ phân giải màn hình
res = (720, 720)
screen = pygame.display.set_mode(res)

# các màu sắc
white = (255, 255, 255)
color_light = (170, 170, 170)     # màu sáng của nút
color_dark = (100, 100, 100)      # màu tối của nút

# kích thước màn hình
width = screen.get_width()
height = screen.get_height()

# thiết lập font chữ
smallfont = pygame.font.SysFont('Corbel', 35)
text = smallfont.render('quit', True, white)   # render chữ “quit” với màu trắng

while True:
    # lấy vị trí con trỏ chuột trước
    mouse = pygame.mouse.get_pos()

    for ev in pygame.event.get():
        if ev.type == pygame.QUIT:
            pygame.quit()
            sys.exit()  # thoát chương trình hoàn toàn

        # nếu chuột được nhấn
        if ev.type == pygame.MOUSEBUTTONDOWN:
            # nếu chuột được nhấn bên trong vùng nút
            if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
                pygame.quit()
                sys.exit()

    # tô màu nền cho màn hình
    screen.fill((60, 25, 60))

    # nếu chuột di chuyển vào vùng nút, chuyển sang màu sáng
    if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
        pygame.draw.rect(screen, color_light, [width/2, height/2, 140, 40])
    else:
        pygame.draw.rect(screen, color_dark, [width/2, height/2, 140, 40])

    # hiển thị chữ "quit" lên nút
    screen.blit(text, (width/2 + 50, height/2))

    # cập nhật màn hình mỗi khung hình
    pygame.display.update()

Đầu ra:tạo-nút-pygame-python

Published on Jul 28, 2025

Related Posts