Cách tạo bộ hẹn giờ bằng Thư viện Arcade của Python cho các sự kiện dựa trên thời gian
Trong quá trình phát triển trò chơi, việc thêm các sự kiện theo thời gian có thể nâng cao đáng kể cơ chế chơi trò chơi và khiến trò chơi trở nên hấp dẫn hơn đối với người chơi. Bằng cách kết hợp bộ hẹn giờ, bạn có thể giới thiệu thử thách, tạo mục tiêu giới hạn thời gian hoặc thêm cảm giác cấp bách vào một số yếu tố trò chơi.
Mục Lục
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 để hiểu những điều cơ bản. Xây dựng một trò chơi mà người chơi có thể di chuyển sang trái và phải và sẽ có một nền tảng duy nhất. Tạo một tệp mới có tên đơn giản-game.py và nhập mô-đun arcade, mô-đun này cung cấp các chức năng cần thiết để tạo trò chơi.
Mã được sử dụng trong bài viết này có sẵn trong kho lưu trữ GitHub này và bạn được sử dụng miễn phí theo giấy phép MIT.
Tiếp theo, xác định Cửa sổ trò chơi lớp, là lớp con của arcade.Window. Bên trong lớp GameWindow, định nghĩa __trong đó__ khởi tạo cửa sổ với chiều rộng, chiều cao và tiêu đề đã chỉ định.
Các on_key_press phương pháp phát hiện các lần nhấn phím mũi tên trái hoặc phải. Nhấn trái giảm người chơi_x tăng 10 đơn vị trong khi nhấn phải sẽ tăng 10 đơn vị. Điều này cho phép người chơi di chuyển theo chiều ngang trong cửa sổ trò chơi.
Để chạy trò chơi, hãy xác định chức năng chính, tạo một thể hiện của GameWindow, gọi phương thức thiết lập để thiết lập cửa sổ trò chơi và cuối cùng, bắt đầu vòng lặp trò chơi bằng cách sử dụng arcade.run().
Thiết kế cấu trúc lớp Timer
Để triển khai bộ hẹn giờ trong trò chơi của mình, bạn có thể tạo một lớp Bộ hẹn giờ với các thuộc tính và phương thức cần thiết. Lớp này sẽ cung cấp các chức năng để khởi động bộ hẹn giờ, dừng nó, truy xuất thời gian đã trôi qua và kiểm tra xem bộ hẹn giờ đã hết hạn chưa. Đây là cấu trúc cơ bản của lớp Timer:
import timeclass Timer:
def __init__(self, duration):
self.duration = duration
self.start_time = 0
self.is_running = False
def start(self):
self.start_time = time.time()
self.is_running = True
def stop(self):
self.is_running = False
def get_elapsed_time(self):
if self.is_running:
return time.time() - self.start_time
return 0
def is_expired(self):
return self.get_elapsed_time() >= self.duration
Lớp Timer chiếm một khoảng thời gian tham số tính bằng giây trong quá trình khởi tạo. Lớp chứa các thuộc tính như thời gian bắt đầu để lưu trữ thời gian khi bộ hẹn giờ bắt đầu và đang chạy để theo dõi trạng thái của bộ đếm thời gian.
Các bắt đầu() phương thức đặt start_time thành thời điểm hiện tại bằng cách sử dụng thời gian.thời gian() và đặt is_running thành ĐÚNG VẬY. Các dừng lại() phương thức chỉ cần đặt is_running thành SAI. Các get_elapsed_time() phương pháp tính toán thời gian đã trôi qua bằng cách trừ start_time khỏi thời gian hiện tại.
Nếu bộ hẹn giờ đang chạy, nó sẽ trả về thời gian đã trôi qua; ngược lại, nó trả về 0. hết hạn() kiểm tra xem thời gian đã trôi qua có lớn hơn hoặc bằng khoảng thời gian hay không, cho biết rằng bộ hẹn giờ đã hết hạn.
Triển khai đồng hồ đếm ngược
Để minh họa việc đếm ngược trong trò chơi của bạn, bạn có thể bắt đầu hẹn giờ khi người chơi nhấn một phím cụ thể, chẳng hạn như phím cách. In bộ đếm ngược ra bàn điều khiển bằng lệnh in của Python. Tạo một tệp mới có tên hẹn giờ.py và thêm mã với những cập nhật này:
import timeclass GameWindow(arcade.Window):
def __init__(self):
super().__init__(WIDTH, HEIGHT, "Simple Game")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
self.timer = Timer(10)
def on_key_press(self, key, modifiers):
if key == arcade.key.SPACE:
self.timer.start()
def on_draw(self):
if self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
remaining_time = max(r_time, 0)
print(f"Countdown: {remaining_time:.1f} seconds")
Đảm bảo rằng bạn có thể nhìn thấy cửa sổ đầu cuối và cửa sổ trò chơi cùng một lúc. Sau đó nhấn dấu cách và bạn sẽ thấy đồng hồ đếm ngược:
Xử lý các sự kiện hẹn giờ và hành động kích hoạt
Bạn cũng có thể kích hoạt chức năng vẽ hình chữ nhật khi hết giờ đếm ngược. Tạo một tệp mới có tên xử lý-event.py và thêm mã với các bản cập nhật bên dưới:
def on_draw(self):
if self.timer.is_expired():
self.draw_rectangle()def draw_rectangle(self):
arcade.draw_rectangle_filled(WIDTH // 2, HEIGHT // 2, 100, 100, red)
Dưới đây là đầu ra:
Tạm dừng, đặt lại và tiếp tục hẹn giờ
Để thêm chức năng tạm dừng, đặt lại và tiếp tục hẹn giờ, bạn có thể mở rộng hẹn giờ lớp bằng các phương pháp thích hợp. Đây là một ví dụ:
class Timer:
def pause(self):
self.duration -= self.get_elapsed_time()
self.is_running = False
def reset(self):
self.start_time = 0
self.is_running = False
def resume(self):
self.start_time = time.time()
self.is_running = True
Thêm phản hồi trực quan vào bộ đếm thời gian
Để cung cấp phản hồi trực quan cho bộ đếm thời gian, bạn có thể kết hợp các yếu tố văn bản hoặc đồ họa trên màn hình trò chơi. Tạo một tệp mới có tên trực quan.py và thêm mã với các bản cập nhật bên dưới:
def on_draw(self):
if self.timer.is_running:
text = f"Countdown: {remaining_time:.1f} seconds"
arcade.draw_text(text, 10, 10, black, 18)
Bây giờ bạn sẽ thấy bộ đếm thời gian trực tiếp trong cửa sổ trò chơi thay vì bảng điều khiển:
Bao gồm các tính năng bổ sung
Để tăng cường hơn nữa các sự kiện dựa trên thời gian, bạn có thể xem xét triển khai các tính năng bổ sung sau trong trò chơi của mình.
Tăng sức mạnh hoặc tiền thưởng dựa trên thời gian
Giới thiệu tăng sức mạnh hoặc tiền thưởng xuất hiện định kỳ trong suốt trò chơi. Những lần tăng sức mạnh này có thể cung cấp các khả năng tạm thời, thêm điểm, tăng tốc độ hoặc vũ khí nâng cao.
Bằng cách giới hạn thời gian, người chơi phải thu thập chúng một cách chiến lược trong một khung thời gian cụ thể để giành lợi thế. Điều này thêm hứng thú và thưởng cho suy nghĩ nhanh chóng.
Thử thách giới hạn thời gian
Tạo các thử thách giới hạn thời gian trong đó người chơi phải hoàn thành nhiệm vụ trong một khung thời gian nhất định. Ví dụ: phần câu đố hoặc nền tảng yêu cầu giải trong một thời gian nhất định.
Điều này thách thức người chơi suy nghĩ và hành động nhanh chóng, tăng thêm cảm giác cấp bách hồi hộp cho lối chơi. Hoàn thành thành công những thử thách này có thể mở khóa phần thưởng hoặc tiến triển câu chuyện.
Thời gian trở ngại hoặc kẻ thù
Thực hiện các chướng ngại vật hoặc kẻ thù theo thời gian gây ra mối đe dọa cho người chơi. Ví dụ: nền tảng di chuyển xuất hiện và biến mất theo khoảng thời gian đều đặn hoặc kẻ thù trở nên bất khả chiến bại trong một thời gian giới hạn.
Người chơi phải căn thời gian cho các hành động và chuyển động của mình một cách chính xác để vượt qua các chướng ngại vật này hoặc đánh bại kẻ thù trước khi hết giờ. Điều này thêm một lớp chiến lược và phối hợp vào trò chơi.
Thực tiễn tốt nhất cho các sự kiện dựa trên thời gian
Khi triển khai các sự kiện dựa trên thời gian trong trò chơi của bạn, điều cần thiết là tuân theo các phương pháp hay nhất này.
Kiểm tra và Cân bằng
Kiểm tra kỹ lưỡng các sự kiện dựa trên thời gian của bạn để đảm bảo chúng công bằng và cân bằng. Tinh chỉnh thời lượng, độ khó và phần thưởng để tạo ra trải nghiệm chơi trò chơi thú vị.
Phản hồi của người dùng
Cung cấp phản hồi rõ ràng và trực quan cho người chơi về trạng thái của bộ đếm thời gian và mọi sự kiện dựa trên thời gian. Việc thêm hiệu ứng âm thanh, chỉ báo hình ảnh hoặc tín hiệu văn bản có thể giúp người chơi hiểu được các giới hạn về thời gian và hậu quả của các hành động của họ.
Đo lường thời gian nhất quán
Sử dụng hệ thống đo thời gian nhất quán trong suốt trò chơi của bạn. Ví dụ: sử dụng giây làm đơn vị cho tất cả các bộ hẹn giờ và phép tính liên quan đến thời gian. Điều này đảm bảo tính nhất quán và dễ hiểu cho cả người chơi và nhà phát triển.
Xử lý các trường hợp cạnh
Xem xét các tình huống trong đó trò chơi có thể bị tạm dừng, thu nhỏ hoặc chạy trong nền. Xử lý những tình huống này một cách duyên dáng để duy trì thời gian chính xác và ngăn chặn hành vi ngoài ý muốn khi trò chơi tiếp tục.
Bằng cách làm theo các phương pháp hay nhất này, bạn có thể tạo các sự kiện dựa trên thời gian để nâng cao lối chơi, thử thách người chơi và mang lại trải nghiệm cân bằng và thú vị.
Làm cho trò chơi trở nên thú vị hơn với các sự kiện dựa trên thời gian
Bằng cách kết hợp các sự kiện dựa trên thời gian vào trò chơi của mình, bạn có thể tạo trải nghiệm năng động và hấp dẫn cho người chơi. Các thử thách giới hạn thời gian làm tăng thêm sự phấn khích và cấp bách, trong khi tăng sức mạnh hoặc chướng ngại vật đúng lúc có thể tạo ra các cơ hội ra quyết định chiến lược.
Thử nghiệm với các cơ chế dựa trên thời gian khác nhau để tìm ra sự cân bằng phù hợp cho trò chơi của bạn, đồng thời nhớ chơi thử và lặp lại để tối đa hóa niềm vui và sự thích thú.