Cách triển khai các cấp trò chơi trong Arcade của Python
Phát triển trò chơi là một quá trình thú vị và sáng tạo cho phép bạn biến những ý tưởng tưởng tượng của mình thành hiện thực. Khi thiết kế một trò chơi, một trong những yếu tố quan trọng có thể nâng cao đáng kể trải nghiệm của người chơi là việc thực hiện các cấp độ trò chơi.
Các cấp độ cung cấp cấu trúc, tiến trình và thử thách, mang lại cho người chơi cảm giác đạt được thành tích và gắn kết khi họ điều hướng qua các giai đoạn khác nhau của trò chơi.
Mục Lục
Tạo một trò chơi đơn giản
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt pip trên thiết bị của mình. Sử dụng lệnh này để cài đặt giải trí thư viện:
pip install arcade
Tạo một trò chơi cơ bản trong đó người chơi có thể di chuyển sang trái và phả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.
Tận dụng khả năng của thư viện Arcade để xử lý đầu vào của người dùng và cập nhật trạng thái trò chơi tương ứng. Tạo một tệp mới có tên đơn giản-game.py và thêm đoạn mã dưới đây:
import arcadeSCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
class MyGame(arcade.Window):
def __init__(self):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
arcade.set_background_color(arcade.color.WHITE)
self.player_x = SCREEN_WIDTH // 2
def on_draw(self):
arcade.start_render()
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.player_x -= 10
elif key == arcade.key.RIGHT:
self.player_x += 10
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT or key == arcade.key.RIGHT:
pass
def main():
game = MyGame()
arcade.run()
if __name__ == "__main__":
main()
Dưới đây là đầu ra:
Tạo nhiều cấp độ
Bây giờ, hãy mở rộng trò chơi bằng cách thêm nhiều cấp độ. Mỗi cấp độ sẽ có những đặc điểm riêng, mang đến những thử thách khác nhau cho người chơi. Bạn có thể sửa đổi mã trước đó để bao gồm các cấp độ bổ sung. Đây là một ví dụ:
class LevelOne:
def __init__(self):
self.player_x = SCREEN_WIDTH // 2 def update(self):
pass
def draw(self):
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)
class LevelTwo:
def __init__(self):
self.player_x = SCREEN_WIDTH // 2
def update(self):
pass
def draw(self):
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.RED)
class MyGame(arcade.Window):
def __init__(self):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
arcade.set_background_color(arcade.color.WHITE)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0
def on_draw(self):
arcade.start_render()
self.levels[self.current_level].draw()
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.levels[self.current_level].player_x -= 10
elif key == arcade.key.RIGHT:
self.levels[self.current_level].player_x += 10
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT or key == arcade.key.RIGHT:
pass
def update(self, delta_time):
self.levels[self.current_level].update()
def main():
game = MyGame()
arcade.run()
if __name__ == "__main__":
main()
Chuyển đổi giữa các cấp độ
Để tạo sự chuyển tiếp suôn sẻ giữa các cấp, hãy phát hiện khi người chơi vượt qua một ranh giới cụ thể. Bạn có thể theo dõi chuyển động của người chơi và khi người chơi vượt qua ranh giới, bạn có thể chuyển sang cấp độ tiếp theo. Tạo một tệp mới có tên transition-between-levels.py và thêm mã với các bản cập nhật bên dưới:
class MyGame(arcade.Window):
def update(self, delta_time):
self.levels[self.current_level].update()
if self.levels[self.current_level].player_x < 0:
self.current_level += 1
self.current_level %= len(self.levels)
self.levels[self.current_level].player_x = SCREEN_WIDTH
elif self.levels[self.current_level].player_x > SCREEN_WIDTH:
self.current_level += 1
self.current_level %= len(self.levels)
self.levels[self.current_level].player_x = 0
Dưới đây là đầu ra:
Bao gồm các tính năng bổ sung
Để làm cho các cấp độ trò chơi của bạn hấp dẫn hơn, bạn có thể kết hợp các tính năng bổ sung như tăng sức mạnh và mục tiêu.
mục tiêu
Mục tiêu cung cấp các mục tiêu hoặc mục tiêu cụ thể để người chơi hoàn thành trong một cấp độ. Họ thêm một cảm giác về mục đích và tiến bộ. Đây là một ví dụ về việc triển khai một tính năng khách quan:
class Objective:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 20 def draw(self):
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.GREEN)
class LevelOne:
def __init__(self):
self.objective = Objective(600, 400)
def update(self):
if arcade.check_for_collision(self.player, self.objective):
self.complete_objective()
def draw(self):
self.objective.draw()
def complete_objective(self):
pass
sưu tầm
Sưu tầm là những vật phẩm hoặc tiền thưởng mà người chơi có thể thu thập trong suốt các màn chơi. Đây là một ví dụ về việc triển khai tính năng sưu tập:
class Collectible:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 10
self.is_collected = False def draw(self):
if not self.is_collected:
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.ORANGE)
def collect(self):
self.is_collected = True
class LevelOne:
def __init__(self):
self.collectible = Collectible(300, 300)
def update(self):
if arcade.check_for_collision(self.player, self.collectible):
self.collectible.collect()
def draw(self):
self.collectible.draw()
chướng ngại vật
Chướng ngại vật có thể là các vật thể tĩnh hoặc các thực thể chuyển động cản trở đường đi của người chơi. Chúng yêu cầu người chơi phải lên chiến lược và tìm cách vượt qua chúng. Đây là một ví dụ về việc triển khai tính năng chướng ngại vật:
class Obstacle:
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height def draw(self):
arcade.draw_rectangle_filled(self.x, self.y, self.width, self.height, arcade.color.GRAY)
class LevelOne:
def __init__(self):
self.obstacles = [Obstacle(400, 200, 100, 50), Obstacle(600, 500, 80, 120)]
tăng sức mạnh
Tăng sức mạnh có thể nâng cao khả năng của người chơi hoặc mang lại lợi thế tạm thời. Đây là một ví dụ về việc triển khai tính năng tăng sức mạnh:
class PowerUp:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 10
self.is_active = True def draw(self):
if self.is_active:
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.YELLOW)
def activate_power_up(self):
self.is_active = True
def deactivate_power_up(self):
self.is_active = False
class LevelOne:
def __init__(self):
self.power_up = PowerUp(200, 200)
def update(self):
if arcade.check_for_collision(self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
def draw(self):
self.power_up.draw()
Thực tiễn tốt nhất cho thiết kế cấp độ
Thiết kế cấp độ đóng một vai trò quan trọng trong việc tạo ra trải nghiệm chơi trò chơi hấp dẫn và thú vị. Dưới đây là một số phương pháp hay nhất cần cân nhắc khi thiết kế cấp độ cho trò chơi của bạn:
Mục tiêu rõ ràng
Mỗi cấp độ nên có một mục tiêu hoặc mục tiêu rõ ràng để người chơi đạt được. Cho dù đó là đến một địa điểm cụ thể, đánh bại kẻ thù hay giải câu đố, thì mục tiêu đó phải được xác định rõ ràng và thông báo cho người chơi.
Đường cong độ khó tăng dần
Thiết kế các cấp độ với độ khó tăng dần để mang lại quá trình học tập suôn sẻ cho người chơi. Bắt đầu với những thử thách đơn giản hơn và dần dần giới thiệu các cơ chế hoặc chướng ngại vật mới khi người chơi tiến bộ. Độ khó tăng đột ngột có thể khiến người chơi nản lòng, vì vậy điều quan trọng là phải duy trì tiến trình cân bằng.
Hình ảnh rõ nét
Đảm bảo rằng thiết kế cấp độ và các yếu tố hình ảnh truyền đạt rõ ràng thông tin quan trọng cho người chơi. Kết hợp âm nhạc và hiệu ứng âm thanh cũng có thể truyền đạt những manh mối quan trọng và cung cấp thông tin cần thiết cho người chơi.
Chơi thử và lặp lại
Chơi thử thường xuyên là điều cần thiết để tinh chỉnh và cải thiện thiết kế cấp độ. Thu thập phản hồi từ người chơi và quan sát trải nghiệm của họ để xác định các khu vực có thể cần điều chỉnh. Lặp lại thiết kế cấp độ của bạn dựa trên phản hồi này để tạo ra lối chơi cân bằng và thú vị hơn.
Cân bằng phần thưởng và thử thách
Thưởng cho người chơi khi vượt qua các thử thách trong cấp độ của bạn. Điều này có thể đạt được thông qua tăng sức mạnh, sưu tầm, mở khóa các khu vực mới hoặc diễn biến câu chuyện. Cân bằng độ khó của các thử thách với các phần thưởng có ý nghĩa sẽ giúp thúc đẩy người chơi và mang lại cảm giác hoàn thành.
Làm cho trò chơi hấp dẫn hơn với các cấp độ
Bằng cách triển khai các cấp trò chơi, bạn có thể nâng cao trải nghiệm tổng thể của người chơi và tạo môi trường chơi trò chơi hấp dẫn hơn. Các cấp độ cung cấp sự tiến bộ, thử thách và sự đa dạng, giúp người chơi luôn đầu tư và có động lực. Chúng cho phép bạn giới thiệu cơ chế, chướng ngại vật, kẻ thù và phần thưởng mới, đảm bảo rằng mỗi cấp độ đều cảm thấy khác biệt và thú vị.