» إلكترونيات » اردوينو »جعل تتريس على اردوينو

جعل تتريس على اردوينو

تحية طيبة سكان موقعنا!
اليوم سنقوم بدراسة الدواخل الخاصة بلعبة Tetris المكتوبة تحت المنصة اردوينو ومصفوفة LED.

مؤلف هذا المنتج محلي الصنع هو AlexGyver ، مؤلف قناة YouTube التي تحمل الاسم نفسه. مرحبًا بك في عالم رائع من البكسل المربع.

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

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



من خلال عدد الإصدارات التجارية المباعة ، تتفوق Tetris على أي لعبة أخرى في تاريخ البشرية. تم بيع 35 مليون نسخة لـ Game Boy واحد فقط ، ناهيك عن لعبة الطوب المحمولة ، والتي كانت كلها تقريبًا في وقت واحد.
سنبدأ تنفيذ تتريس على اردوينو ومصفوفة ملونة مع تحليل "العكازات". تتكون المصفوفة من مؤشرات LED ثلاثية الألوان. تكمن مشكلة هذا النوع من المصفوفات في أنه بارد للغاية. يتم ترميز لون كل بكسل بـ 24 بت ، أي 8 بت لكل مكون: الأحمر والأخضر والأزرق. لا يوجد مثل هذا النوع من البيانات عن اردوينو ، هناك ما يلي - 32 بت.

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

أضف المزيد من المكتبات وابدأ في كتابة التعليمات البرمجية ، ستنتهي الذاكرة. لا يستخدم المؤلف بشكل أساسي ، على سبيل المثال ، arduino mega ، حيث توجد ذاكرة أكبر. الهدف هو جعل اللعبة على وجه التحديد على arduino nano ، باستخدام أدوات بسيطة ومعيارية ومعروفة ، ولكن في نفس الوقت النهج غير القياسية و "العكازات" وبمساعدتهم على تحقيق أفضل رمز.

سيكون أول "عكاز" هو رفض تخزين مواقع الأرقام بشكل منفصل في الذاكرة وبشكل عام كل ما يحدث على الشاشة.نحتاج إلى تخزين إحداثيات نقاط رقم التغذية وإحداثيات نقاط الأرقام التي تم إسقاطها بالفعل ، أي كحد أقصى ، نحتاج إلى صفيف آخر ، ثنائي الأبعاد 16 × 16 ، وهذا يصل إلى 256 بايت.

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

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

لمعالجة الأزرار ، يستخدم المؤلف أيضًا مكتبته. مخطط الاتصال للأزرار بسيط للغاية: 4 أزرار ، 8 أسلاك.

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

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

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

الكتلة العلوية هي 0.1 واليمين 1.1 واليسار -1.1.

خذ الحرف G. الكتلة السفلى هي 0.0 ، 0.1 التالية ، 0.2 التالية ، وحافة الحرف 1.2.

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

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

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

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

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


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

بالمناسبة ، عند الضغط على الزر لأسفل ، يندفع الشكل لأسفل بسرعة عالية ويحل مكانه.

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


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

يتم عرض الحساب بأرقام ، يتم تخزينها في الذاكرة كمجموعة من الأصفار والأصفار ، والتي يتم من خلالها تشغيل مصابيح LED أو إيقاف تشغيلها. هذا هو شكل Tetris المكتوب في مصفوفة العنوان. شكرا لكم على اهتمامكم. اراك قريبا!

فيديو:
10
10
10

أضف تعليقًا

    • ابتسميبتسمxaxaحسنًالا أعرفياهونيا
      رئيسهالصفرأحمقنعمنعم نعمعدوانيسر
      آسفارقصرقص 2رقص 3العفومساعدةالمشروبات
      توقفالأصدقاءجيدجيدصفارة الحكمإغماءلسان
      دخانالتصفيقصرخةيعلنمشتقعدم الإشارةتنزيل
      الحرارةغاضبتضحك 1mdaاجتماعالمسكسلبي
      not_iالفشارمعاقبةاقرأتخويفيخيفبحث
      ساخرشكرا لكهذاtoclclumnikحادتوافق
      سيءالنحلblack_eyeblum3استحىتباهىالملل
      للرقابةإرضاءسر 2تهددانتصاريونظارة شمس
      صدمةتنفسههههساداهلا وسهلاكروتويya_za
      ya_dobryiالمساعدne_huliganne_othodiحمىحظرقريب

ننصحك بقراءة:

تسليمها للهاتف الذكي ...