Python | Làm cho một đối tượng nhảy trong PyGame

Category: Pygame

Pygame là một bộ mô-đun Python đa nền tảng được thiết kế để viết trò chơi điện tử. Nó bao gồm các thư viện đồ họa máy tính và âm thanh được thiết kế để sử dụng với ngôn ngữ lập trình Python. Tùy thuộc vào trí tưởng tượng hoặc nhu cầu của nhà phát triển, loại trò chơi nào họ muốn phát triển bằng bộ công cụ này sẽ được quyết định. Vì vậy, trong bài viết này, chúng ta sẽ tìm hiểu cách làm cho một vật thể nhảy bằng thư viện PyGame trong Python. Có một công thức cơ bản từ cơ học cổ điển để làm cho một vật thể nhảy.

F = 1/2 * m * v^2 

Trong đó F là lực hướng lên/xuống, m là khối lượng của vật và v là vận tốc. Vận tốc giảm dần theo thời gian vì khi vật nhảy, vận tốc sẽ không tăng thêm trong mô phỏng này. Khi vật chạm đất, cú nhảy kết thúc. Nếu isjump biến là Đúng hoặc Sai, nó cho biết vật có đang nhảy hay không. Nếu isjump là Đúng, vị trí của vật sẽ được cập nhật theo công thức trên. Dưới đây là phần triển khai:

# nhập mô-đun pygame vào chương trình
import pygame
 
# khởi tạo pygame và cho phép sử dụng các chức năng của nó
pygame.init()
 
# tạo cửa sổ hiển thị với kích thước 500x500
win = pygame.display.set_mode((500, 500))
 
# đặt tên cho cửa sổ pygame
pygame.display.set_caption("Jump Game")
 
# tọa độ hiện tại của đối tượng
x = 200
y = 200
 
# kích thước của đối tượng
width = 30
height = 40
 
# lưu trạng thái người chơi có đang nhảy hay không
isjump = False
 
# lực nhảy và khối lượng
v = 5
m = 1
 
# cờ kiểm tra vòng lặp còn chạy hay không
run = True
 
# vòng lặp vô hạn
while run:
    # tô màn hình bằng màu đen
    win.fill((0, 0, 0))

    # vẽ đối tượng hình chữ nhật lên màn hình
    pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
     
    # xử lý sự kiện
    for event in pygame.event.get():
        # nếu người dùng nhấn nút thoát
        if event.type == pygame.QUIT:
            # thoát vòng lặp
            run = False

    # lấy các phím đang được nhấn
    keys = pygame.key.get_pressed()
      
    if not isjump:
        # nếu nhấn phím cách
        if keys[pygame.K_SPACE]:
            # bắt đầu nhảy
            isjump = True
             
    if isjump:
        # tính lực nhảy: F = 1/2 * m * v^2
        F = (1 / 2) * m * (v ** 2)
         
        # thay đổi tọa độ y để nhảy lên
        y -= F
         
        # giảm vận tốc khi đi lên, âm khi đi xuống
        v -= 1
         
        # khi đạt đỉnh, đổi chiều rơi xuống
        if v < 0:
            m = -1

        # khi quay về vị trí ban đầu
        if v == -6:
            # kết thúc trạng thái nhảy
            isjump = False

            # thiết lập lại vận tốc và khối lượng
            v = 5
            m = 1
     
    # tạo độ trễ 10 mili giây
    pygame.time.delay(10)
 
    # cập nhật cửa sổ hiển thị
    pygame.display.update()

# thoát pygame
pygame.quit()

Published on Jul 28, 2025

Related Posts