پاسخ دادن به ورودی برای هر بازی حیاتی است و پشتیبانی از صفحه کلید برای کاربرانی که آن را ترجیح می دهند خوب است. نحوه استفاده از کتابخانه آرکید پایتون را بیابید.
ورودی صفحه کلید بخش اساسی توسعه بازی است و برای ارائه یک تجربه کاربری عالی، مدیریت موثر آن بسیار مهم است. کتابخانه Arcade راهی ساده و کارآمد برای مدیریت ورودی صفحه کلید در بازیهای پایتون شما فراهم میکند.
ایجاد یک بازی ساده با یک بازیکن
می توانید کد کامل را در این مخزن GitHub پیدا کنید.
قبل از ورود به صفحه کلید، مطمئن شوید که پیپ را در دستگاه خود نصب کرده اید. برای نصب کتابخانه arcade از این دستور استفاده کنید:
pip install arcade
پس از آن، اسکلت یک بازی ساده را ایجاد کنید:
import arcade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height, "My Game")
arcade.set_background_color(arcade.color.WHITE)
def on_draw(self):
arcade.start_render()
def update(self, delta_time):
pass
MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
این یک پنجره با پس زمینه سفید ایجاد می کند. سپس یک بازیکن را به بازی خود اضافه کنید:
class Player:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 5
self.radius = 20
def draw(self):
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.BLUE)
def move_left(self):
self.x -= self.speed
def move_right(self):
self.x += self.speed
def move_up(self):
self.y += self.speed
def move_down(self):
self.y -= self.speed
این یک بازیکن ساده با دایره آبی ایجاد می کند. با تغییر کلاس MyGame می توانید این بازیکن را به بازی خود اضافه کنید:
import arcade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height, "My Game")
arcade.set_background_color(arcade.color.WHITE)
self.player = Player(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)
def on_draw(self):
arcade.start_render()
self.player.draw()
def update(self, delta_time):
pass
def main():
MyGame(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
if __name__ == "__main__":
main()
اکنون یک بازیکن در بازی خود دارید که می توانید آن را روی صفحه بکشید.
پاسخ دادن به فشارهای کلیدی و انتشار
برای پاسخ به ورودی کاربر در بازی خود، باید فشار دادن و رها کردن کلیدها را کنترل کنید. کتابخانه Arcade دو روش برای مدیریت این رویدادها ارائه می دهد: on_key_press و on_key_release.
برای استفاده از این روش ها، باید آنها را در زیر کلاس arcade.Window خود تعریف کنید. هنگامی که بازیکن کلیدی را فشار می دهد یا رها می کند، آرکید روش مربوطه را اجرا می کند و دو آرگومان را به آن ارسال می کند: کلید و اصلاح کننده. کلید یک عدد صحیح است که نشان دهنده کد کلید کلید فشرده یا آزاد شده است. اصلاحکنندهها یک فیلد بیتی است که نشاندهنده هر کلید اصلاحکنندهای است که پخشکننده نیز فشار داده است، مانند Shift یا Control.
در اینجا مثالی از نحوه پاسخ دادن به فشار کلید در بازی خود آورده شده است:
class MyGame(arcade.Window):
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
# Move player left
elif key == arcade.key.RIGHT:
# Move player right
elif key == arcade.key.UP:
# Move player up
elif key == arcade.key.DOWN:
# Move player down
برای پاسخ به انتشار کلید، می توانید روش on_key_release را به همین ترتیب تعریف کنید:
class MyGame(arcade.Window):
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT:
# Stop moving player left
elif key == arcade.key.RIGHT:
# Stop moving player right
elif key == arcade.key.UP:
# Stop moving player up
elif key == arcade.key.DOWN:
# Stop moving player down
مهم است که توجه داشته باشید که گرفتن ورودی کاربر در pygame به بررسی دستی رویداد در حلقه بازی شما نیاز دارد. از سوی دیگر، کتابخانه Arcade به طور خودکار روش های مربوطه را زمانی که بازیکن کلیدی را فشار داده یا رها می کند، فراخوانی می کند. این بدان معنی است که شما مجبور نیستید به صورت دستی رویدادهای کلیدی را در حلقه بازی خود بررسی کنید و از دردسر کد اضافی صرفه جویی کنید.
سفارشی کردن کنترل ورودی صفحه کلید متناسب با نیازهای بازی شما
کتابخانه Arcade راه های زیادی برای سفارشی کردن ورودی صفحه کلید ارائه می دهد. ممکن است بخواهید اتصالات کلید را برای بازی خود تغییر دهید یا به بازیکن اجازه دهید تا اتصالات کلید خود را شخصی سازی کند.
می توانید این کار را با تعریف یک دیکشنری key_map انجام دهید که هر کلید را به روش مربوط به شی پخش کننده نگاشت می کند. برای اینکه به پخش کننده اجازه دهید اتصالات کلید خود را سفارشی کند، می توانید یک منوی تنظیمات اضافه کنید که فرهنگ لغت key_map را بر اساس ترجیحات پخش کننده تغییر می دهد.
در اینجا یک مثال است:
class MyGame(arcade.Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
self.player = Player(100, 100)
self.key_map = {
arcade.key.LEFT: self.player.move_left,
arcade.key.RIGHT: self.player.move_right,
arcade.key.UP: self.player.move_up,
arcade.key.DOWN: self.player.move_down
}
def on_key_press(self, key, modifiers):
if key in self.key_map:
self.key_map[key]()
def on_key_release(self, key, modifiers):
if key in self.key_map:
self.key_map[key + 1]()
به ورودی های کاربر در زمان واقعی پاسخ دهید
پاسخگویی به ورودی کاربر در زمان واقعی یک جنبه ضروری برای ایجاد یک بازی جذاب است. با صرف زمان برای مدیریت صحیح ورودی های صفحه کلید در بازی خود، می توانید تجربه جذاب تر و همه جانبه تری برای بازیکنان خود ایجاد کنید و در نهایت بازی خود را در یک بازار شلوغ متمایز کنید.