تعد الاستجابة للإدخال أمرًا حيويًا لأي لعبة ، ومن الجيد دعم لوحة المفاتيح للمستخدمين الذين يفضلونها. اكتشف الكيفية باستخدام مكتبة الآركيد في Python.
يعد إدخال لوحة المفاتيح جزءًا أساسيًا من تطوير اللعبة ، ومن الضروري التعامل معها بشكل فعال لتوفير تجربة مستخدم رائعة. توفر مكتبة Arcade طريقة مباشرة وفعالة للتعامل مع إدخال لوحة المفاتيح في ألعاب Python.
إنشاء لعبة بسيطة مع لاعب
يمكنك العثور على الكود الكامل في هذا GitHub repo.
قبل الغوص في التعامل مع مدخلات لوحة المفاتيح ، تأكد من أن لديك نقطة مثبتة في جهازك. استخدم هذا الأمر لتثبيت مكتبة الآركيد:
نقطة تثبيت الممرات
بعد ذلك ، قم بإنشاء الهيكل العظمي للعبة بسيطة:
يستورد ممر
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480فصللعبتي(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع ، "لعبتي")
arcade.set_background_color (arcade.color. أبيض)defon_draw(الذات):
arcade.start_render ()defتحديث(ذاتي ، delta_time):
يمر
لعبتي (SCREEN_WIDTH ، SCREEN_HEIGHT)
arcade.run ()
هذا يخلق نافذة بخلفية بيضاء. بعد ذلك ، أضف لاعبًا إلى لعبتك:
فصللاعب:
def__فيه__(النفس ، س ، ص):
self.x = x
self.y = ذ
النفس.السرعة = 5
نصف القطر الذاتي = 20defيرسم(الذات):
arcade.draw_circle_filled (self.x، self.y، self.radius، arcade.color. أزرق)defتحرك يسارا(الذات):
self.x - = self.speeddefتحرك يمينا(الذات):
x + = self.speeddefتحرك(الذات):
self.y + = self.speed
defتحرك لأسفل(الذات):
self.y - = self.speed
يؤدي هذا إلى إنشاء لاعب بسيط بدائرة زرقاء. يمكنك إضافة هذا اللاعب إلى لعبتك عن طريق تعديل لعبتي فصل:
يستورد ممر
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480فصللعبتي(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع ، "لعبتي")
arcade.set_background_color (arcade.color. أبيض)
self.player = المشغل (SCREEN_WIDTH // 2، ارتفاع الشاشة // 2)defon_draw(الذات):
arcade.start_render ()
self.player.draw ()defتحديث(ذاتي ، delta_time):
يمرdefرئيسي():
لعبتي (SCREEN_WIDTH ، SCREEN_HEIGHT)
arcade.run ()
لو __name__ == "__رئيسي__":
رئيسي()
الآن لديك لاعب في لعبتك يمكنك رسمه على الشاشة.
الاستجابة للضغوط والإصدارات الرئيسية
للرد على مدخلات المستخدم في لعبتك ، تحتاج إلى التعامل مع ضغطات وإصدارات المفاتيح. توفر مكتبة Arcade طريقتين للتعامل مع هذه الأحداث: on_key_press و on_key_release.
لاستخدام هذه الأساليب ، تحتاج إلى تعريفها في ملف ممر. نافذة او شباك فئة فرعية. عندما يقوم اللاعب بالضغط على مفتاح أو تحريره ، سيقوم الممر بتشغيل الطريقة المقابلة ، ويمرره إلى وسيطتين: المفتاح والمعدلات. مفتاح هو عدد صحيح يمثل رمز المفتاح للمفتاح المضغوط أو المحرر. الصفات التعريفية هو حقل بت يمثل أي مفاتيح تعديل قام اللاعب بالضغط عليها أيضًا ، مثل Shift أو Control.
فيما يلي مثال على كيفية الرد على الضغط على مفتاح في لعبتك:
فصللعبتي(ممر. نافذة او شباك):
defon_key_press(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح == arcade.key. غادر:
# نقل لاعب اليسار
أليف مفتاح == arcade.key. يمين:
# نقل اللاعب الصحيح
أليف مفتاح == arcade.key. أعلى:
# تحريك اللاعب
أليف مفتاح == arcade.key. تحت:
# حرك اللاعب لأسفل
للرد على الإصدارات الرئيسية ، يمكنك تحديد on_key_release الطريقة بنفس الطريقة:
فصللعبتي(ممر. نافذة او شباك):
defon_key_release(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح == arcade.key. غادر:
# توقف عن تحريك لاعب اليسار
أليف مفتاح == arcade.key. يمين:
# توقف عن تحريك اللاعب الصحيح
أليف مفتاح == arcade.key. أعلى:
# توقف عن تحريك اللاعب
أليف مفتاح == arcade.key. تحت:
# توقف عن تحريك اللاعب لأسفل
من المهم ملاحظة ذلك الالتقاط إدخال المستخدم في pygame يتطلب فحصًا يدويًا للحدث داخل حلقة اللعبة. من ناحية أخرى ، تستدعي مكتبة Arcade تلقائيًا الأساليب ذات الصلة عندما يضغط اللاعب على مفتاح أو يحرره. هذا يعني أنك لست مضطرًا إلى التحقق يدويًا من الأحداث الرئيسية في حلقة اللعبة ، مما يوفر لك متاعب التعليمات البرمجية الإضافية.
تخصيص معالجة إدخال لوحة المفاتيح لتناسب احتياجات لعبتك
توفر مكتبة Arcade العديد من الطرق لتخصيص إدخال لوحة المفاتيح. قد ترغب في تغيير روابط المفاتيح للعبتك أو السماح للاعب بتخصيص روابط المفاتيح الخاصة به.
يمكنك القيام بذلك عن طريق تحديد القاموس key_map التي تعين كل مفتاح بالطريقة المقابلة لكائن اللاعب. للسماح للاعب بتخصيص روابط المفاتيح الخاصة به ، يمكنك إضافة قائمة إعدادات تعدل ملف key_map القاموس على أساس تفضيلات اللاعب.
هذا مثال:
فصللعبتي(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع ، عنوان):
super () .__ init __ (العرض ، الارتفاع ، العنوان)
self.player = لاعب (100, 100)self.key_map = {
arcade.key. اليسار: self.player.move_left ،
arcade.key. اليمين: self.player.move_right ،
arcade.key. UP: self.player.move_up،
arcade.key. لأسفل: self.player.move_down
}defon_key_press(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح في self.key_map:
self.key_map [مفتاح] ()
defon_key_release(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح في self.key_map:
self.key_map [مفتاح + 1]()
الاستجابة لإدخالات المستخدم في الوقت الحقيقي
تعد الاستجابة لمدخلات المستخدم في الوقت الفعلي جانبًا أساسيًا لإنشاء لعبة جذابة. من خلال قضاء الوقت في التعامل مع إدخال لوحة المفاتيح بشكل صحيح في لعبتك ، يمكنك إنشاء ملف تجربة غامرة للاعبين ، وجعل لعبتك في نهاية المطاف تبرز في مكان مزدحم المتجر.