جدول المحتويات:

Flappy Bird على ATtiny85 وشاشة OLED SSD1306: 6 خطوات (بالصور)
Flappy Bird على ATtiny85 وشاشة OLED SSD1306: 6 خطوات (بالصور)

فيديو: Flappy Bird على ATtiny85 وشاشة OLED SSD1306: 6 خطوات (بالصور)

فيديو: Flappy Bird على ATtiny85 وشاشة OLED SSD1306: 6 خطوات (بالصور)
فيديو: Flappy-Bird Like Game Using Arduino and 1.5" OLED 2024, سبتمبر
Anonim
Image
Image
الأجهزة
الأجهزة

مرحبا جميعا،

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

الخطوة 1: الأجهزة

إذا لم تكن مهتمًا بالفعل ببناء دائرة للعبة ولكنك تفهم النظرية الكامنة وراءها ، فيمكنك تخطي هذه الخطوة.

تتطلب لعبتي زرين ، شاشة ATtiny85 وشاشة I2C OLED بحجم 128 × 64 بكسل وبعض مصادر الطاقة. بطاقة العمل / وحدة التحكم في الألعاب: ATtiny85 وشاشة OLED توضح لك كيفية إنشاء لوحة بها كل ما تحتاجه! إذا لم تكن مهتمًا بصنع لوحي ، فاخرج لوح التجارب وسأخبرك بالمواصفات. يمكنك استخدام أي نوع مختلف من ATtiny85. أوصي بشاشات OLED مثل هذه.

  1. قم بتوصيل جانب واحد من اثنين من الأزرار الانضغاطية بالدبابيس 2 و 3 على ATtiny85. على هذه الأسلاك ، أضف أيضًا مقاومًا بقوة 10 كيلو أوم متصل بالأرض (مقاوم منسدل).
  2. قم بتوصيل الجانب الآخر من هذه الأزرار بالجهد. عندما لا يتم الضغط على الزر ، ستكون حالة الدبوس منخفضة. عند الضغط عليه ، ستكون حالة الدبوس عالية.
  3. قم بتوصيل السن 7 بمسمار SCL على شاشتك ، ثم قم بتوصيل الطرف 5 بمسمار SDA على شاشتك. قم بتوصيل دبابيس الطاقة (VCC و GND) على الشاشة وفقًا لذلك.
  4. أخيرًا ، قم بتوصيل دبوس 4 على ATtiny بالأرض ودبوس 8 بالجهد.

الخطوة الثانية: البرنامج

البرنامج!
البرنامج!

مرفق هنا مجلد يحتوي على جميع الملفات التي تحتاجها لتشغيل اللعبة. تم التعليق جيدًا على اثنين من الملفات ، FlappyBird.ino و WallFunctions.h ، من أجل متعة القراءة. يمكنك تحميل رسم FlappyBird.ino إلى ATtiny85 (بسرعة 1 ميجا هرتز) واللعب بعيدًا! إذا كنت مهتمًا بتعلم النظرية الكامنة وراء هذه اللعبة ، أو كنت تريد إنشاء لعبتك الخاصة ، فتابع القراءة!

لا تزال هناك بعض المشاكل في لعبتي. I2C ليست أفضل طريقة لنقل البيانات بأي وسيلة. وفقًا لهذا المنشور ، لا يمكن للشاشة قبول البيانات إلا عند حوالي 100 كيلو هرتز ، لذلك حتى لو قمنا بزيادة سرعة الساعة ATtiny إلى 8 ميجا هرتز ، فستظل قناة I2C هي عنق الزجاجة. يمكن أن تنتج الشاشة حوالي 10 إطارات في الثانية كحد أقصى. كلما زادت الحاجة إلى رسم صور منفصلة ، كانت العملية برمتها أبطأ. وبالتالي ، فإن لعبتي سهلة للغاية حيث لا يمكنك جعل الجدران تتحرك بسرعة كبيرة عبر الشاشة! فيما يلي بعض التحديات التي تواجهك إذا كنت تعتقد أنك على مستوى المهمة:

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

الخطوة 3: Flappy Bird ATtiny85: النظرية

فلابي بيرد ATtiny85: نظرية
فلابي بيرد ATtiny85: نظرية

على الرغم من أن الشاشة التي نستخدمها بها ارتفاع 64 بكسل لاستخدامها في اللعبة ، فمن الممكن فقط وضع العناصر في كتل من 8 بكسل. وبالتالي ، لا يوجد سوى 8 إحداثيات y ممكنة. لتسهيل الأمور ، قمت في البرنامج بتقسيم الشاشة بأكملها بهذه الطريقة ، مما جعل شبكة من 16 كتلة في 8 كتل ، حيث تكون كل كتلة 8x8 بكسل. لملء كل كتلة ، يبلغ حجم كل كائن في اللعبة 8x8 بكسل. هذا يجعل كل شيء أسهل بكثير في الإدارة. إذا نظرت إلى الصورة أعلاه ، يمكنك أن ترى كيف قسمت الشاشة. يتكون كل جدار من 6 كتل ، مع فتحة بارتفاع 2 كتلتين ، مما يجعل الارتفاع الكلي لكل جدار 8 كتل.

في البرنامج ، يتم تمثيل كل جدار على شكل هيكل يسمى الجدار. كل هيكل جدار له خاصيتان - موضع الثقب والعمود. "وضع الثقب" هو رقم من 0 إلى 6 ، حيث لا يوجد سوى 7 مواضع محتملة في جدار مكون من 8 كتل لثقب بارتفاع كتلتين. "العمود" هو رقم من 0 إلى 15 ، حيث يمكن عرض 16 عمودًا من الكتل على الشاشة.

موصى به: