Cách kiểm soát chuyển động của người chơi trong các game Arcade

Cách kiểm soát chuyển động của player trong các game Arcade

Chia sẻ kiến thức 31/05/2023

Bài viết dưới đây sẽ hướng dẫn bạn cách làm cho player trong game Arcade của bạn di chuyển theo đầu vào của người chơi qua bàn phím và chuột.

 

Arcade là một thư viện Python thông dụng mà bạn có thể sử dụng để tạo các game arcade 2D. Nó dễ sử dụng và cung cấp một khung đơn giản để tạo game bằng Python.

Một trong những thành phần thiết yếu của bất kỳ game nào là chuyển động của người chơi.

Tạo một game đơn giản trong Arcade

Bạn có thể tìm thấy code hoàn chỉnh trong kho lưu trữ GitHub này .

Trước khi bắt đầu, hãy đảm bảo bạn đã hãy cài đặt pip trên máy. Sử dụng lệnh dưới đây để cài đặt thư viện arcade:

 
pip install library

Sau đó, hãy tạo một lớp Player làm lớp con của lớp arcade.Sprite và một lớp MyGame làm lớp con của arcade.Window. Lớp MyGame sẽ có các phương thức để thiết lập các đối tượng game, hiển thị chúng trên màn hình, cập nhật trạng thái game và xử lý đầu vào của người dùng. Code tạo màn hình game và đối tượng người chơi như sau:

import arcade

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
class Player(arcade.Sprite):
    def __init__(self):
        super().__init__("player.png", 0.5)
        self.center_x = SCREEN_WIDTH // 2
        self.center_y = SCREEN_HEIGHT // 2
class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        self.player = None
        arcade.set_background_color(arcade.color.BLACK)

    def setup(self):
        self.player = Player()

    def on_draw(self):
        arcade.start_render()
        self.player.draw()

    def update(self, delta_time):
        pass

MyGame().run()

Thêm chuyển động của người chơi bằng đầu vào bàn phím

Bây giờ bạn đã tạo màn hình game và đối tượng người chơi, bạn có thể di chuyển người chơi theo phản hồi của đầu vào bàn phím. Xác định các phương thức on_key_press() và on_key_release() mà bạn sẽ gọi khi player nhấn hoặc thả một phím.

def on_key_press(self, key, modifiers):
    if key == arcade.key.LEFT:
        self.player.change_x = -5
    elif key == arcade.key.RIGHT:
        self.player.change_x = 5
    elif key == arcade.key.UP:
        self.player.change_y = 5
    elif key == arcade.key.DOWN:
        self.player.change_y = -5
def on_key_release(self, key, modifiers):
    if key == arcade.key.LEFT or key == arcade.key.RIGHT:
        self.player.change_x = 0
    elif key == arcade.key.UP or key == arcade.key.DOWN:
        self.player.change_y = 0

Khi thêm chuyển động của player bằng đầu vào bàn phím, bạn có thể điều chỉnh tốc độ di chuyển bằng cách thay đổi giá trị được gán cho self.player.change_x và self.player.change_y. Bạn cũng có thể thêm các điều kiện để hạn chế chuyển động của player trong màn hình game. 

Thêm chuyển động của người chơi bằng đầu vào chuột

Ngoài đầu vào bàn phím, bạn cũng có thể thêm chuyển động của người chơi bằng đầu vào chuột. Xác định phương thức on_mouse_motion(), phương thức này sẽ chạy khi player di chuyển chuột. Bên trong phương thức, đặt thuộc tính center_x và center_y của đối tượng player thành vị trí chuột hiện tại.

 
def on_mouse_motion(self, x, y, dx, dy):
    self.player.center_x = x
    self.player.center_y = y

Khi thêm chuyển động của player bằng đầu vào chuột, bạn có thể tùy chỉnh hành vi của đối tượng player khi người dùng nhấp hoặc giữ chuột bằng cách xác định các phương thức như on_mouse_press() hoặc on_mouse_drag(). Bạn có thể sử dụng các phương thức này để kích hoạt các hành động của player như bắn hoặc nhảy, tùy thuộc vào cơ chế của mỗi game. 

Giới thiệu các tính năng khác 

Bạn có thể nâng cao chuyển động của người chơi hơn nữa bằng cách tính đến khả năng tăng và giảm tốc. Sửa đổi phương thức on_key_press() để trừ hoặc thêm vào các thuộc tính change_x và change_y của đối tượng player, tùy thuộc vào hướng di chuyển. Các thuộc tính change_x và change_y cũng được đặt thành 0 trong phương thức on_key_release() như ở phần trên.

def on_key_press(self, key, modifiers):
    if key == arcade.key.LEFT:
        self.player.change_x -= 5
    elif key == arcade.key.RIGHT:
        self.player.change_x += 5
    elif key == arcade.key.UP:
        self.player.change_y += 5
    elif key == arcade.key.DOWN:
        self.player.change_y -= 5
def on_key_release(self, key, modifiers):
    if key == arcade.key.LEFT or key == arcade.key.RIGHT:
        self.player.change_x = 0
    elif key == arcade.key.UP or key == arcade.key.DOWN:
        self.player.change_y = 0

Giống như PyGame, bạn cũng có thể thêm tính năng phát hiện va chạm giữa đối tượng player và các đối tượng khác trong game, chẳng hạn như kẻ thù hoặc chướng ngại vật. Bạn có thể thực hiện điều này bằng cách thêm đoạn code sau vào phương thức update() của lớp MyGame:

def update(self, delta_time):
    self.player.update()

    # Check for collisions between player and other game objects
    collisions = arcade.check_for_collision_with_list(self.player, self.enemy_list)

    for collision in collisions:
        collision.kill()

Tạo game hấp dẫn với chuyển động tương tác của người chơi

Chuyển động tương tác của player là một khía cạnh quan trọng của bất kỳ game nào. Việc sử dụng các loại cơ chế chuyển động khác nhau như bay, nhảy, chạy và trượt có thể tạo thêm sự đa dạng và hứng thú cho người chơi.

 

Cung cấp cho player quyền kiểm soát chuyển động của họ sẽ bổ sung thêm cảm giác đắm chìm trong game, điều này có thể dẫn đến trải nghiệm chơi game thỏa mãn hơn.

Tìm hiểu các khóa học lập trình của FUNiX tại đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/python-arcade-library-games-player-movement/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!