Làm thế nào để di chuyển hình ảnh bằng chuột trong PyGame?

Category: Pygame

Pygame là một thư viện Python được sử dụng để tạo trò chơi video đa nền tảng. Các trò chơi được tạo bởi Pygame có thể dễ dàng chạy trên bất kỳ thiết bị đầu vào nào như chuột, bàn phím và cần điều khiển. Bạn có muốn tạo một trò chơi chạy bằng chuột không? Bạn không biết cách di chuyển hình ảnh bằng chuột? Đừng lo, điều bạn cần làm là khai báo hai giá trị, tức là chạy và di chuyển. Sau khi khai báo các giá trị, hãy thiết lập những gì ứng dụng của bạn sẽ làm khi ở trạng thái chạy. Đọc bài viết bên dưới để biết thêm chi tiết.

Tiếp cận:

Bước 1: Đầu tiên, nhập thư viện pygame.

import pygame
from pygame.locals import *

Bước 2: Bây giờ, hãy lấy màu sắc làm dữ liệu đầu vào mà chúng ta muốn sử dụng trong trò chơi.

color_1 = #RGB value of color 1
color_2 = #RGB value of color 2
color_n = #RGB value of color n

Bước 3: Sau đó, xây dựng một trò chơi GUI.

pygame.init()

Bước 4: Tiếp theo, thiết lập kích thước cho trò chơi GUI của bạn. 

w, h = #Width dimension, #Height dimension
screen = pygame.display.set_mode((w, h))

Bước 5: Tiếp theo, lấy hình ảnh làm đầu vào mà bạn muốn di chuyển bằng chuột

img = pygame.image.load('#Enter the image')
img.convert()

Bước 6: Ngoài ra, bạn có thể làm cho hình ảnh của mình trông hấp dẫn hơn bằng cách thêm đường viền hình chữ nhật xung quanh.

rect = img.get_rect()
rect.center = w//2, h//2

Bước 7: Sau đó, thiết lập giá trị chạy để chạy trò chơi và giá trị di chuyển để di chuyển hình ảnh.

running = True
moving = False

Bước 8: Thiết lập những việc bạn muốn ứng dụng thực hiện khi ở trạng thái chạy.

while running:
   for event in pygame.event.get():
  • Bước 8.1: Khi ứng dụng đang chạy, hãy thoát ứng dụng nếu người dùng muốn thoát.

       if event.type == QUIT:
           running = False
  • Bước 8.2: Trong trường hợp người dùng không muốn thoát, hãy di chuyển hình ảnh của bạn theo kích thước của ứng dụng GUI.

       elif event.type == MOUSEBUTTONDOWN:
          if rect.collidepoint(event.pos):
              moving = True  
  • Bước 8.3: Tiếp theo, đặt giá trị di chuyển là False nếu bạn chỉ muốn di chuyển hình ảnh bằng cách nhấp chuột, nếu không, đặt giá trị di chuyển là True nếu bạn muốn di chuyển hình ảnh mà không cần nhấp chuột.

       elif event.type == MOUSEBUTTONUP:          
           moving = False
  • Bước 8.4: Tiếp theo, hãy đặt hình ảnh của bạn ở trạng thái chuyển động nếu nó đã từng được di chuyển.

       elif event.type == MOUSEMOTION and moving:
           rect.move_ip(event.rel)  

Bước 9: Tiếp theo, bạn cần thiết lập màu sắc màn hình và hình ảnh trên màn hình.

   screen.fill(YELLOW)
   screen.blit(img, rect)

Bước 10: Tiếp theo, hãy làm cho hình ảnh của bạn trông hấp dẫn hơn bằng cách tạo đường viền cho hình ảnh.

   pygame.draw.rect(screen, BLUE, rect, 2)

Bước 11: Ngoài ra, hãy cập nhật những thay đổi đã thực hiện trong trò chơi GUI.

   pygame.display.update()

Bước 12: Cuối cùng, thoát khỏi trò chơi GUI.

pygame.quit()

Dưới đây là cách thực hiện.

# Chương trình Python để di chuyển hình ảnh bằng chuột

# Import thư viện pygame
import pygame
from pygame.locals import *

# Khai báo màu sắc
YELLOW = (255, 255, 0)
BLUE = (0, 0, 255)

# Khởi tạo game
pygame.init()

# Kích thước cửa sổ game
w, h = 640, 350
screen = pygame.display.set_mode((w, h))

# Tải ảnh từ file
img = pygame.image.load('geek.jpg')
img.convert()

# Tạo hình chữ nhật bao quanh ảnh
rect = img.get_rect()
rect.center = w // 2, h // 2  # Đặt ảnh ở giữa màn hình

# Biến điều khiển trạng thái chạy và di chuyển
running = True
moving = False

# Vòng lặp game
while running:
    for event in pygame.event.get():

        # Thoát khỏi game khi nhấn nút đóng cửa sổ
        if event.type == QUIT:
            running = False

        # Khi nhấn chuột xuống và chuột nằm trên hình ảnh
        elif event.type == MOUSEBUTTONDOWN:
            if rect.collidepoint(event.pos):
                moving = True  # Bắt đầu di chuyển ảnh

        # Khi thả chuột ra thì dừng di chuyển
        elif event.type == MOUSEBUTTONUP:
            moving = False

        # Khi di chuyển chuột (và đang trong trạng thái moving)
        elif event.type == MOUSEMOTION and moving:
            rect.move_ip(event.rel)  # Di chuyển ảnh theo chuột

    # Vẽ nền màu vàng
    screen.fill(YELLOW)

    # Vẽ hình ảnh
    screen.blit(img, rect)

    # Vẽ đường viền màu xanh quanh ảnh
    pygame.draw.rect(screen, BLUE, rect, 2)

    # Cập nhật màn hình
    pygame.display.update()

# Thoát khỏi game
pygame.quit()

Đầu ra:

pygame di chuyển hình ảnh chuột

Published on Jul 28, 2025

Related Posts