/ / Cách kiểm soát thời gian trong trò chơi của bạn bằng PyGame

Cách kiểm soát thời gian trong trò chơi của bạn bằng PyGame

Bạn đã bao giờ muốn tạo một trò chơi thú vị bằng thư viện PyGame của Python, nhưng lại cảm thấy choáng ngợp trước khái niệm quản lý thời gian? Nếu vậy, bạn không đơn độc.


Thời gian là một trong những thành phần quan trọng nhất của quá trình phát triển trò chơi và việc hiểu cách hoạt động của thời gian trong PyGame là điều cần thiết để tạo ra các trò chơi hấp dẫn và thành công. PyGame cung cấp một số chức năng và mô-đun hữu ích cho phép bạn kiểm soát thời gian trong trò chơi của mình.


Tạo một trò chơi đơn giản

Bắt đầu bằng cách tạo một trò chơi đơn giản trong đó một hình chữ nhật đang di chuyển sang phải. Để bắt đầu, hãy cài đặt pip trên thiết bị của bạn và sử dụng lệnh bên dưới để cài đặt mô-đun PyGame:

 pip install pygame 

Bạn có thể tìm thấy tất cả các ví dụ mã trong repo GitHub này.

Sau khi cài đặt, hãy nhập mô-đun PyGame. Sau đó, tạo một màn hình có kích thước 800×600 và màu nền trắng, đồng thời thêm đối tượng rect. Mã sẽ trông giống như thế này:

 import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
background = pygame.Surface(screen.get_size())
background.fill((255, 255, 255))
rect = pygame.Rect(0, 0, 20, 20)

Sau đó, sử dụng vòng lặp while để trò chơi tiếp tục chạy và giữ cho đối tượng hình chữ nhật di chuyển sang phải cho đến khi đến cuối màn hình.

 running = True

while running:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         running = False
   
   rect.x += 1

   if rect.x > 780:
      rect.x = 0
   
   screen.blit(background, (0, 0))
   pygame.draw.rect(screen, (0, 0, 0), rect)
   pygame.display.update()

Bạn cũng có thể thêm đầu vào và va chạm của người dùng trong trò chơi. Dưới đây là đầu ra:

màn hình trò chơi pygame đơn giản với đối tượng người chơi hình vuông

Tổng quan về Mô-đun thời gian của PyGame

Để kiểm soát thời gian trong trò chơi này, bạn có thể sử dụng pygame.time mô-đun. Mô-đun này cung cấp các tính năng hữu ích khác nhau, bao gồm một Cái đồng hồ đối tượng với các phương pháp như get_ticks(), Chờ đợi()trì hoãn(). Sử dụng các chức năng này, bạn có thể dễ dàng kiểm soát thời gian trong trò chơi của mình.

Tạo đối tượng đồng hồ để theo dõi thời gian

Trong PyGame, bạn có thể sử dụng đối tượng Đồng hồ để theo dõi thời gian. Để tạo Đồng hồ, chỉ cần sử dụng dòng mã sau:

 clock = pygame.time.Clock() 

Với đối tượng Đồng hồ này, giờ đây bạn có thể theo dõi thời gian trong trò chơi của mình. Ngoài ra còn có một số chức năng hữu ích khác được liên kết với đối tượng Đồng hồ, chẳng hạn như:

  • dành thời gian(): Với sự trợ giúp của chức năng này, bạn có thể truy xuất thời gian đã thực hiện cho từng khung hình của trò chơi. Để sử dụng chức năng này, chỉ cần thêm dòng mã sau vào sau vòng lặp while:
     time = clock.get_time() 

    Thêm một đối tượng văn bản để hiển thị thời gian:

     font = pygame.font.SysFont('Arial', 18)
    text = font.render('Time taken: {} ms'.format(time), True, (0, 0, 0))
    screen.blit(text, (0, 0))
  • đánh dấu(): Sử dụng chức năng này để đặt tốc độ khung hình của trò chơi. Theo mặc định, tốc độ khung hình được đặt thành 60 FPS. Để đặt thành 30 FPS, chỉ cần thêm dòng mã sau:
     clock.tick(30) 
  • get_fps(): Bạn có thể truy xuất tốc độ khung hình hiện tại của trò chơi bằng cách sử dụng get_fps. Để sử dụng chức năng này, chỉ cần thêm dòng mã sau:
     fps = clock.get_fps() 

    Bạn có thể thêm một đối tượng văn bản để hiển thị tốc độ khung hình:

     font = pygame.font.SysFont('Arial', 18)
    text = font.render('FPS: {}'.format(fps), True, (0, 0, 0))
    screen.blit(text, (0, 20))
  • tick_busy_loop(): Hàm này cho phép bạn tính toán bao nhiêu mili giây đã trôi qua kể từ lần gọi cuối cùng đến đánh dấu() chức năng. Để sử dụng nó, chỉ cần thêm dòng mã sau:
     clock.tick_busy_loop(30) 

Bắt thời gian bằng cách sử dụng get_ticks

Các get_ticks() trả về thời gian tính bằng mili giây kể từ khi khởi tạo PyGame. Để sử dụng chức năng này, hãy thêm dòng mã sau:

 time_elapsed = pygame.time.get_ticks() 

Thêm một đối tượng văn bản để hiển thị thời gian:

 font = pygame.font.SysFont('Arial', 18)
text = font.render('Time Elapsed: {} ms'.format(time_elapsed), True, (0, 0, 0))
screen.blit(text, (0, 40))

Bạn có thể sử dụng thời gian đã trôi qua để triển khai các yếu tố trò chơi dựa trên thời gian, chẳng hạn như tăng sức mạnh kéo dài trong một khoảng thời gian cụ thể. Ví dụ: bạn có thể thực hiện tăng sức mạnh để tăng tốc độ của đối tượng trực tràng trong 5 giây:

 if time_elapsed / 5000 > 0:
   rect.x += 5

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

màn hình trò chơi với văn bản thời gian đã trôi qua và đối tượng người chơi

Tạm dừng trò chơi bằng chức năng chờ và trì hoãn

PyGame cũng cung cấp hai chức năng mà bạn có thể sử dụng để tạm dừng trò chơi trong một khoảng thời gian cụ thể: Chờ đợi chức năng và trì hoãn chức năng.

Để sử dụng Chờ đợi chức năng, chỉ cần thêm dòng mã sau vào vòng lặp while:

 pygame.time.wait(1000) 

Thao tác này sẽ tạm dừng trò chơi trong 1000 mili giây (1 giây). Để sử dụng trì hoãn chức năng, chỉ cần thêm dòng mã sau vào vòng lặp while:

 pygame.time.delay(1000) 

Điều này sẽ làm chậm khung hình tiếp theo của trò chơi trong 1000 mili giây (1 giây).

Sự khác biệt giữa chờ đợi và trì hoãn

Có một số khác biệt giữa các Chờ đợitrì hoãn chức năng. Các Chờ đợi chức năng ngủ quá trình để chia sẻ bộ xử lý với các chương trình khác. Các trì hoãn chức năng sẽ sử dụng bộ xử lý để làm cho độ trễ chính xác hơn. Điều này có nghĩa là trì hoãn chức năng yêu cầu nhiều sức mạnh bộ xử lý hơn chức năng Chờ đợi chức năng và phù hợp với các trò chơi cần thời gian chính xác.

Tạo sự kiện bằng set_timer

Bạn có thể dùng set_timer() để tạo một sự kiện kích hoạt sau một khoảng thời gian xác định.

Các sự kiện trong PyGame là các đối tượng chứa thông tin về đầu vào của người dùng hoặc thông báo do chương trình tạo. Để sử dụng chức năng này, hãy tạo một sự kiện tùy chỉnh và thêm dòng mã sau:

 pygame.time.set_timer(CUSTOM_EVENT, 1000) 

Điều này sẽ tạo ra một sự kiện kích hoạt sau 1.000 mili giây—1 giây. Có nhiều loại sự kiện khác nhau mà bạn có thể kích hoạt, chẳng hạn như di chuyển chuột, nhập bàn phím và sự kiện cửa sổ. Sau đó, mã của bạn có thể phản ứng với những sự kiện này theo bất kỳ cách nào phù hợp nhất.

Ví dụ: nếu bạn muốn thay đổi trục y của đối tượng rect sau 1 giây hoặc khi sự kiện tùy chỉnh kích hoạt, bạn có thể thêm dòng mã sau:

 if event.type == CUSTOM_EVENT:
   rect.y += 20

Bằng cách này, bạn có thể dễ dàng tạo các sự kiện dựa trên thời gian trong trò chơi của mình mà bạn có thể sử dụng để tạo lối chơi thú vị và đầy thử thách.

Cải thiện điều khiển trò chơi theo thời gian

Với sự trợ giúp của kiểm soát thời gian, bạn có thể cải thiện khả năng điều khiển của trò chơi. Bạn có thể sử dụng thời gian để thực hiện các điều kiện tăng tốc, giảm tốc và thậm chí là kết thúc trò chơi. Nhiều trò chơi giới thiệu khái niệm về thời gian đạn trong đó hành động chậm lại trong một khoảng thời gian ngắn.

Bằng cách sử dụng các chức năng kiểm soát thời gian trong PyGame, bạn có thể dễ dàng triển khai các tính năng đó—và hơn thế nữa—trong các trò chơi của riêng mình.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *