تعلم كيفية كتابة الكود يمكن أن يكون رحلة طويلة. ليس عليك فقط العثور على موارد لمساعدتك على التعلم ، ولكن عليك أيضًا العثور على أفكار مشاريع مثيرة تجعل تعليمك على المسار الصحيح.

توفر ألعاب الفيديو فرصة رائعة لبرمجة شيء يمكنك الاستمتاع به. ويمكنهم أيضًا تعليمك الأساسيات التي تحتاجها لتكون مبرمجًا جيدًا. تستكشف هذه المقالة مشروع لعبة فيديو Arduino المحمولة باليد لتبدأ.

ماذا نصنع ولماذا؟

قبل الغوص في جزء الدليل من هذه المقالة ، من المنطقي استكشاف ما نقوم به ولماذا اخترناه لهذا المشروع. تأتي العديد من التحديات مع صنع ألعاب لأجهزة مثل Arduinos.

  • مساحة التخزين: معظم لوحات اردوينو تأتي مع ذاكرة وصول عشوائي قليلة جدًا أو ذاكرة فلاش. لا يضع هذا حدًا لمقدار الكود الذي يمكنهم تشغيله فحسب ، بل إنه يمثل أيضًا تحديات عندما يتعلق الأمر بالعمل مع المتغيرات.
  • قوة المعالجة: يحتوي Arduino الذي استخدمناه على وحدة معالجة مركزية منخفضة الطاقة ، لذلك من المستحيل إنشاء تطبيقات تحتاج إلى الموارد لها.
  • مكونات محدودة: يتوفر في Arduinos الكثير من الدبابيس ، لكن العديد من المكونات تحتاج إلى أكثر من واحد. هذا يحدنا عندما يتعلق الأمر بعناصر التحكم وعرض المخرجات.
instagram viewer

مع وضع هذه التحديات في الاعتبار ، قررنا إنشاء جهاز محمول باليد يقوم بتشغيل لعبة بسيطة للغاية تعتمد على رد الفعل. يمكنك بسهولة إنشاء ألعاب أخرى للأجهزة التي نعمل معها ، ونحن نشجعك على أن تكون مبدعًا.

اللعبة نفسها بسيطة للغاية. تظهر ثلاث كتل على الشاشة ، اثنتان محددتان وواحدة مملوءة ، ولكل منها زر مادي مطابق أدناه. يتعين على اللاعب الضغط على الزر الأيمن في كل جولة لمواصلة اللعب ، وإذا ضغطوا على الزر الخطأ أو نفد الوقت الذي تنتهي فيه اللعبة. كل ضغطة زر ناجحة تمنح نقاطًا. تزيد اللعبة من مستوى الصعوبة ببطء عن طريق تقليل وقت رد الفعل المتاح.

توصيل شاشة OLED و Arduino والأزرار

يعد توصيل لعبتك المحمولة باليد الخطوة الأولى في هذه العملية. كما ترى في الرسم التخطيطي للدائرة أعلاه ، ليس عليك إجراء العديد من الاتصالات للبدء ، ويمكنك حتى استخدام لوحة توصيل لهذا المشروع.

لقد نشرنا بالفعل دليلاً لمساعدتك على ذلك أزرار دفع سلكية إلى Arduino. لنا مشروع Arduino Aquarium Monitor يوضح لك كيفية استخدام شاشة OLED مع متحكم مثل هذا. على هذا النحو ، سنركز على رمز هذا المشروع لبقية هذه المقالة.

كود لعبة اردوينو المحمولة

يعد التنسيق المناسب وهياكل الملفات المنظمة أمرًا مهمًا جدًا للمبرمجين المبتدئين والمحترفين على حدٍ سواء. سوف تشكر نفسك على الوقت الذي أمضيته في تنظيم التعليمات البرمجية الخاصة بك بدقة إذا كان عليك الرجوع إليها مرة أخرى.

يستخدم الكود ملف INO رئيسي لتشكيل أساس مشروعنا. يوجد أيضًا ملف C ++ للتحكم في الشاشة ، وملف C ++ لتشغيل رمز اللعبة الرئيسي ، وملف مكتبة Arduino لربطها معًا.

سوف نتعمق أكثر في هذا الرمز أدناه ، لكننا نشجعك على إلقاء نظرة على الكود المعلق في مشروع Arduino Handheld Game على GitHub. سيساعدك الرجوع إليها بجانب هذه المقالة.

ملف المكتبة (library.h)

يلعب ملف مكتبتنا دورًا مهمًا ، حيث يربط ملفات مشاريعنا الأخرى معًا حتى يتمكنوا من العمل كتطبيق واحد. يحتوي هذا الملف على تصريحات لتضمين مكتبة Arduino.h وجميع الوظائف الموجودة في كود لعبتنا والتي تحتاج إلى العمل بين ملفاتنا. بدون هذا ، لن يعمل رمزنا ببساطة.

ملف INO الرئيسي (main.ino)

مثل العديد من مشاريع Arduino ، بدأ هذا بالقالب الافتراضي المقدم من Arduino IDE. هذا النموذج يعطيها نصب و عقدة الوظائف التي نستخدمها لاستدعاء الوظائف في ملفاتنا الأخرى. يحتوي هذا الملف أيضًا على تصريح لتضمين ملف library.h.

تعد وظيفة الإعداد مثالية لتهيئة الشاشة والأزرار الخاصة بنا ، حيث تعمل مرة واحدة فقط عند إعادة تعيين Arduino أو تشغيله. لهذا ، نسمي وظيفة disSetup () في ملف العرض الخاص بنا ووظيفة butSetup () في ملف لعبتنا.

إن وظيفة الحلقة () الخاصة بنا هي أبسط من وظيفة الإعداد () ، مع استدعاء واحد فقط لوظيفة gameState () الموجودة في ملف اللعبة. سوف نستكشف هذا بمزيد من التفصيل لاحقًا في المقالة.

ملف رمز العرض (display.cpp)

نحن نستخدم شاشة SSD1306 OLED لهذا المشروع ، على الرغم من أنه يمكنك استخدام نوع مختلف من العرض إذا قمت بتحرير الكود وفقًا لذلك. يبدأ هذا الملف بإدراج ملف المكتبة ، مكتبة. ثم يتضمن إعلانات مكتبات SPI و Wire و Adafruit_GX و Adafruit_SSD1306. بعد ذلك ، يقوم بتعريف بعض الثوابت لتوفير إعدادات العرض.

الوظيفة الأولى ، disSetup، يقوم بتهيئة العرض ويعرض شاشة شعار البداية. ثم يمسح الشاشة بعد الانتظار لمدة ثانيتين تقريبًا. يستدعي ملفنا الرئيسي main.ino disSetup في ملفه نصب وظيفة.

باقي الوظائف في هذا الملف ، باستثناء timerBar () ، تشكل الشاشات المختلفة التي تظهر خلال اللعبة. ملف اللعبة لعبة، يستدعي كل من هذه الوظائف.

  • startGame (): تتحكم هذه الوظيفة في الشاشة الأولى التي يراها اللاعب. يسأل ببساطة عما إذا كانوا مستعدين أثناء الاتصال بـ التبديل الوظيفة الموجودة في ملف اللعبة.
  • startGame (): بمجرد أن يبدأ اللاعب اللعبة ، تظهر هذه الشاشة عدًا تنازليًا قصيرًا. ثم يغير حالة اللعبة لتتناسب.
  • inGame (): هذه هي أكثر وظائف العرض تعقيدًا ، باستخدام ثلاثة متغيرات لتحميل كل جولة من اللعبة. يبدأ ببيان if الذي يحدد أي من المربعات الثلاثة المراد ملؤها ، متبوعًا بعرض المربعات ومستوى اللاعب ونقاطه.
  • timerBar (): تستخدم هذه الوظيفة متغيرًا لعرض شريط المؤقت أسفل الشاشة. يظهر للاعب كم من الوقت لديه لكل جولة.
  • SuccessScreen (): هذه وظيفة بسيطة تعرض رسالة في كل مرة يُكمل فيها اللاعب الجولة بنجاح.
  • endGame (): تعرض هذه الوظيفة النهائية لعبة على الشاشة مع نقاط اللاعب وخيار بدء اللعبة مرة أخرى.

ملف كود اللعبة (game.cpp)

أخيرًا ، باعتباره الملف الأخير الذي يجب استكشافه ، فقد حان الوقت لإلقاء نظرة على رمز اللعبة. يبدأ هذا الملف ، مثل الملفات الأخرى ، بإدراج ملف library.h. يحتوي أيضًا على قائمة طويلة من متغيرات الأعداد الصحيحة المختلفة التي نستخدمها أثناء اللعبة.

ستجد وظيفة butSetup () قبل أي شيء آخر. تستدعي وظيفة setup () في ملفنا الرئيسي butSetup. تستخدم هذه الوظيفة المتغيرات لإعداد الأزرار كمدخلات يمكننا قراءتها لاحقًا.

  • switchInstance (): تقوم هذه الوظيفة بالتبديل بين حالات اللعبة ، من شاشة البداية إلى اللعبة واللعبة عبر الشاشات. يتلقى متغيرًا لإخباره بحالة اللعبة التي يجب التبديل إليها. تنتظر عبارة if الضغط على زر لبدء اللعبة من حالة startGame (). تبدأ عبارة if الأخرى اللعبة مرة أخرى من حالة endGame ().
  • gameState (): تحدد هذه الوظيفة صعوبة اللعبة بناءً على درجة اللاعب وتستدعي الوظيفة الصحيحة اعتمادًا على حالة اللعبة. يبدأ بسلسلة من عبارات if التي تحدد المتغيرات بناءً على درجة اللاعب ، متبوعة بمزيد من عبارات if للتحقق من الحالة الحالية.
  • TileSelector (): تنشئ هذه الوظيفة رقمًا عشوائيًا بين 0 و 2 يخبر اللعبة عن أي من المربعات الثلاثة يجب ملؤها في أي وقت.
  • theGame (): يمكن القول إن هذه الوظيفة هي الأهم على الإطلاق. يستدعي ال محدد البلاط و في اللعبة وظائف ، واختيار بلاط جديد وعرضه على الشاشة. بعد ذلك ، ستجد حلقة for تعمل كمؤقت لكل جولة. يحتوي على مجموعة من عبارات if التي تلتقط ضغطات الأزرار وتحدد ما إذا كانت صحيحة.

بناء لعبة اردوينو الخاصة بك

هذه المقالة مصاحبة لكود المشروع الموجود على جيثب. يمكنك العثور على مزيد من المعلومات حول سطور التعليمات البرمجية المحددة التي استخدمناها في التعليقات في تلك الملفات. ولكن يمكنك أيضًا تحميله ببساطة على Arduino والاستمتاع بالمتعة.

الإبداع هو المفتاح في عالم تطوير اللعبة ، ونحن نشجعك على العمل على أفكار اللعبة الخاصة بك جنبًا إلى جنب مع هذه الفكرة.

أفضل 10 مشاريع راديو اردوينو

اقرأ التالي

شاركسقسقةشاركبريد الالكتروني

مواضيع ذات صلة

  • برمجة
  • افعلها بنفسك
  • أفكار مشروع DIY
  • دروس مشروع DIY
  • اردوينو
  • برمجة

نبذة عن الكاتب

صموئيل ل. غاربيت (41 مقالة منشورة)

صموئيل كاتب تقني مقيم في المملكة المتحدة ولديه شغف بكل ما يتعلق بالتصنيع بنفسك. بعد أن بدأ أعماله في مجالات تطوير الويب والطباعة ثلاثية الأبعاد ، إلى جانب العمل ككاتب لسنوات عديدة ، يقدم Samuel رؤية فريدة في عالم التكنولوجيا. مع التركيز بشكل أساسي على المشاريع التقنية DIY ، فهو لا يحب أكثر من مشاركة الأفكار الممتعة والمثيرة التي يمكنك تجربتها في المنزل. خارج العمل ، يمكن عادةً العثور على Samuel وهو يركب الدراجات أو يلعب ألعاب الفيديو على الكمبيوتر أو يحاول يائسًا التواصل مع سلطعون حيوانه الأليف.

المزيد من Samuel L. غاربيت

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك