الألعاب ، بحكم تعريفها ، تفاعلية. يجعل Gosu هذا التفاعل مباشرًا من خلال واجهة بسيطة لاكتشاف والتفاعل مع الضغط على زر وماوس.
هناك طريقتان أساسيتان للتعامل مع الإدخال في برنامجك. الأول هو نهج موجه نحو الحدث. عند الضغط على الأزرار ، تتلقى برامجك حدثًا ويمكنك التفاعل وفقًا لذلك. والثاني هو التحقق مما إذا تم الضغط على زر معين في وقت التحديث. كلتا التقنيتين صالحة تمامًا ، استخدم أيهما يناسبك.
وراء الكواليس ، يتم تمثيل الأزرار بأعداد صحيحة. تعتمد هذه الرموز الصحيحة على النظام الأساسي ومن المحتمل ألا تجد طريقها إلى رمز اللعبة. لتلخيص هذا بعيدًا ، يوفر Gosu عددًا من الثوابت التي يجب استخدامها.
لكل مفتاح لوحة مفاتيح ، هناك جوسو:: كيلوبايت * ثابت. بالنسبة لمعظم المفاتيح ، يمكن تخمين أسماء هذه الثوابت بسهولة. على سبيل المثال ، مفاتيح الأسهم هي جوسو:: KbLeft, جوسو:: KbRight, جوسو:: KbUp و جوسو:: KbDown. للحصول على قائمة كاملة ، راجع وثائق لوحدة Gosu.
يتم تسليم أحداث الإدخال إلى جوسو:: نافذة نموذج. في الحلقة الرئيسية ، من قبل تحديث يتم استدعاء Gosu لتقديم الأحداث لجميع الأزرار التي تم الضغط عليها أو تحريرها. يفعل ذلك عن طريق استدعاء زر أسفل و button_up الطرق ، تمرير معرف المفتاح أو الضغط على الزر.
في ال زر أسفل و button_up الأساليب ، غالبا ما تجد قضية بيان. هذا ، بالإضافة إلى كونه وظيفة للغاية ، يوفر طريقة أنيقة للغاية ومعبرة لتحديد ما يجب فعله اعتمادًا على الزر الذي تم الضغط عليه أو تحريره. ما يلي هو مثال قصير على ما زر أسفل يمكن أن تبدو الطريقة. يجب أن توضع في جوسو:: نافذة الفئة الفرعية ، وسوف يغلق النافذة (إنهاء البرنامج) عندما هرب يتم الضغط على المفتاح.
حق سهل؟ دعونا توسيع هذا. هنا هو لاعب صف دراسي. يمكن أن تتحرك يسارًا ويمينًا إذا تم الضغط على المفتاحين الأيسر والأيمن. لاحظ أن هذه الفئة أيضًا زر أسفل و button_up طرق. إنهم يعملون مثل الطرق من أ جوسو:: نافذة فئة فرعية. جوسو لا يعرف شيئا عن لاعب على الرغم من أننا سوف ندعو لاعبطرق يدويا من جوسو:: نافذةطرق. يمكن العثور على مثال كامل قابل للتشغيل هنا.
إذا لم يكن الإدخال المستند إلى الحدث هو أسلوبك ، فيمكنك الاستعلام عن أي منه جوسو:: نافذة لمعرفة ما إذا تم الضغط على أي زر أو مفتاح في أي وقت. يمكنك تجاهل زر أسفل و button_up الاسترجاعات بالكامل.
للاستعلام عن جوسو:: نافذة لمعرفة ما إذا تم الضغط على مفتاح ، اتصل على زر أسفل؟ مع معرف الزر الذي تريد التحقق منه. لا تنس علامة الاستفهام في هذه المكالمة! إذا اتصلت button_down (Gosu:: KbLeft)، سوف تكون الإبلاغ زر اضغط على جوسو:: نافذة فئة فرعية. حتى إذا لم يكن لديك أي طرق استدعاء محددة ، فإن الفصل الأصل ، جوسو:: نافذة إرادة. لن يكون هناك خطأ ، لن يعمل كما تتوقع. فقط لا تنس علامة الاستفهام تلك!
هنا هو لاعب إعادة كتابة الفصل للاستخدام زر أسفل؟ بدلاً من الأحداث. يتوفر مثال كامل قابل للتشغيل هنا. هذه المرة ، يتم التحقق من الإدخال في بداية تحديث طريقة. ستلاحظ أيضًا أن هذا المثال أقصر ولكن ، في رأيي ، أقل أناقة.
تتم معالجة أزرار الماوس بنفس طريقة التعامل مع أزرار لوحة المفاتيح ولوحة الألعاب. يمكنك كلاهما الاستعلام عنها زر أسفل؟ والأحداث مع زر أسفل و button_up. ومع ذلك ، قد يتم الاستعلام عن حركة الماوس فقط ، ولا توجد أحداث لحركة الماوس. جوسو:: نافذة'س فأر و فأري توفر الطرق إحداثيات X و Y لمؤشر الماوس.
لاحظ أن إحداثيات X و Y تتعلق بنافذة اللعبة. لذا ، على سبيل المثال ، إذا كان الماوس في الزاوية اليسرى العليا ، فسيكون بالقرب من الإحداثيات (0,0). أيضا ، إذا كان مؤشر الماوس في الخارج من نافذة اللعبة بالكامل ، سيظل يشير إلى مكان المؤشر بالنسبة للنافذة. كلاهما فأر و فأري يمكن أن يكون أقل من صفر وأكثر من عرض أو ارتفاع النافذة.
سيقوم البرنامج التالي بعرض نقش متحرك جديد أينما تنقر بالماوس. لاحظ أنه يستخدم كلاً من الإدخال المستند إلى الحدث (للنقرات) والإدخال المستند إلى الاستعلام (للحصول على موضع الماوس). يتوفر ملف كامل قابل للتشغيل هنا.