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

إعادة إنشاء أصعب لعبة في العالم على Arduino: 7 خطوات
إعادة إنشاء أصعب لعبة في العالم على Arduino: 7 خطوات

فيديو: إعادة إنشاء أصعب لعبة في العالم على Arduino: 7 خطوات

فيديو: إعادة إنشاء أصعب لعبة في العالم على Arduino: 7 خطوات
فيديو: شاهدات ابداعات الناس في برمجة الالعاب على محرك Unreal Engine 😍🔥 2024, شهر نوفمبر
Anonim
Image
Image

يعتمد هذا المشروع على لعبة كمبيوتر يمكنك العثور عليها عبر الإنترنت. اسمها هو "أصعب لعبة في العالم". تمكنت من إعادة إنشائه على Arduino باستخدام أربع وحدات LED Matrix. في هذا الدليل ، أعلمك كيفية بناءه بنفسك. قبل الدخول في الكثير من التفاصيل ، أود أن أقدم نظرة عامة سريعة على الخطوات التي مررت بها لإنشاء هذه اللعبة.

  1. جمعت كل الأجزاء المطلوبة.
  2. لقد قمت بتوصيل الأجزاء معًا.
  3. لقد كتبت رسمًا تخطيطيًا يستخدم عصا التحكم لتحريك مؤشر LED للاعبين عبر جميع الوحدات.
  4. لقد صممت العقبات الأولى وأضفتها إلى الرسم التخطيطي بحيث قاموا بمحاكاة لعبة Worlds Hardest Game.
  5. ثم أضفت رمزًا لاكتشاف تصادم مع العوائق ، والذي سيعيد تشغيل اللعبة.
  6. ثم صممت مستويين آخرين من العقبات.

الخطوة 1: جميع الأجزاء

كل الاجزاء
كل الاجزاء
كل الاجزاء
كل الاجزاء

فيما يلي قائمة بجميع الأجزاء التي تحتاجها:

  1. موصل Arduino UNO و USB:
  2. أربع وحدات 8x8: مصفوفة LED
  3. عصا التحكم:
  4. 10 أسلاك من الذكور إلى الإناث: https://www.banggood.com/40pcs-20cm-Male-To-F Female …

الخطوة 2: كيفية توصيل الأجزاء بـ Arduino

كيفية توصيل الأجزاء بالاردوينو
كيفية توصيل الأجزاء بالاردوينو

كيفية توصيل مصفوفة LED بأردوينو

  1. يذهب GND إلى GND
  2. يذهب VCC إلى 5V
  3. ينتقل DataIn إلى الرقم الرقمي 12
  4. ينتقل CLK إلى الرقم الرقمي 11
  5. ينتقل CS أو LOAD إلى الرقم الرقمي 10

كيفية توصيل عصا التحكم

  1. يذهب GND إلى GND
  2. 5V يذهب إلى 5V
  3. يذهب VRx إلى الدبوس التناظري A0
  4. يذهب VRy إلى الدبوس التناظري A1
  5. لا يتم استخدام SW

تتصل البطارية بمقبس 9 فولت لمنح طاقة الأردوينو

الخطوة 3: مخطط تدفق البرنامج

مخطط التدفق للبرنامج
مخطط التدفق للبرنامج

يشير الشكل البيضاوي إلى بداية البرنامج.

الخطوة الأولى هي تحديد جميع العقبات.

تشير الخطوتان التاليتان إلى ضبط المتغيرات وتشغيل جميع الوحدات.

الخطوة التالية ، هي ضبط LED على المستوى الأول وأي متغيرات أخرى.

قم بعد ذلك بعرض المستوى الذي يوجد به المشغل حاليًا.

يشير المعين إلى قراءة عصا التحكم لمعرفة الاتجاه الذي يتم دفعه فيه.

ثم حرك اللاعب في أي اتجاه تم دفع عصا التحكم.

تحقق ومعرفة ما إذا كان اللاعب قد اصطدم بعائق.

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

إذا كان اللاعب في نهاية المستوى ، فاضبط المستوى التالي ثم ارجع إلى "عرض المستوى الحالي". إذا لم تكن في النهاية ، حرك العوائق وارجع إلى "قراءة جويستيك".

الخطوة 4: برمجة جويستيك

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

# تضمين "LedControl.h"

كثافة العمليات DataIn = 12 ؛ int CLK = 11 ؛ int DIN = 10 ؛ LedControl lc = LedControl (DataIn، CLK، DIN، 4) ؛ // ينشئ كائنًا لأربع وحدات int delaytime = 50 ؛ // السرعة التي تعمل بها اللعبة int joystick_RtLt، joystick_UpDn؛ عدد int players_x = 0 ؛ // وضع أفقي للاعبين من 0 إلى 31 int players_y = 3 ؛ // وضع عمودي للاعبين من 0 إلى 7 صف ، عمود ، وحدة ؛ إعداد باطل () {initialize_modules () ، // تشغيل وضبط كل الوحدات النمطية الأربعة} حلقة باطلة () {move_player () ؛ // بدء الحلقة بالتحقق مما إذا كان اللاعب يتحرك تأخير (وقت تأخير) ؛ } void initialize_modules () {lc.shutdown (0، false)؛ // يبدأ الوحدة النمطية 0 لتر كثافة المجموعة (0 ، 1) ؛ lc.shutdown (1 ، خطأ) ؛ // يبدأ الوحدة النمطية 1 لتر كثافة المجموعة (1 ، 1) ؛ lc.shutdown (2 ، خطأ) ؛ // يبدأ الوحدة النمطية 2 لتر كثافة المجموعة (2 ، 1) ؛ lc.shutdown (3 ، خطأ) ؛ // يبدأ الوحدة النمطية 3 لتر كثافة المجموعة (3 ، 1) ؛ lc.clearDisplay (0) ، // clears module 0} void move_player () {module = players_x / 8 ؛ // يحدد الوحدة التي يوجد بها اللاعب في العمود = players_x٪ 8؛ // يحدد العمود حيث يوجد اللاعب في صف الوحدة = players_y؛ lc.setLed (وحدة ، صف ، عمود ، خطأ) ؛ // إيقاف تشغيل الصمام في الوضع الحالي للاعب joystick_RtLt = analogRead (A0) / 204-2 ؛ // اقرأ X-joystick ونطاق الخريطة من 2 إلى -2 إذا كان (joystick_RtLt> 0) // عندما تكون عصا التحكم على المسار الصحيح players_x ++ ؛ // اذهب يمينًا إذا كان (joystick_RtLt 0) // إذا كانت عصا التحكم على اليسار وليس في البداية players_x-- ؛ // حرك ذراع التحكم الأيسر_UpDn = analogRead (A1) / 204-2 ؛ // قراءة Y-joystick ونطاق الخريطة من 2 إلى -2 إذا (جويستيك_تحديد 0) // إذا كان ذراع التحكم معطلاً ولم يكن اللاعب في الجزء السفلي player_y-- ؛ // تحرك لأسفل آخر إذا كان (joystick_UpDn> 0 && players_y <7) // إذا كان ذراع التحكم لأعلى ولم يكن اللاعب في أفضل players_y ++؛ // وحدة الصعود = players_x / 8 ؛ // تعيين وحدة للاعبين عمود المركز الجديد = players_x٪ 8 ؛ // تعيين العمود للاعبين صف المركز الجديد = players_y؛ // تعيين الصف للاعبين في المركز الجديد lc.setLed (وحدة ، صف ، عمود ، صحيح) ؛ // تشغيل الصمام في الموضع الجديد للاعب}

الآن بعد أن أضفت عصا التحكم ، فلنعمل على العقبة الأولى!

الخطوة 5: المستوى الأول

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

عقبة البايت [المستويات] [المشاهد] [الأعمدة] [الصفوف] = {// ثلاثة مستويات ، 8 مشاهد ، 8 مجموعات ، 8 صفوف

{{{1 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، // المستوى الأول ، المشهد الأول {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 1 ، 1 ، 1 ، 1 ، 1 ، { 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المستوى الأول ، المشهد الثاني {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {1 ، 0 ، 0 ، 1 ، 1 ، 1 ، 1 } ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{1 ، 1 ، 1 ، 1 ، 0 ، 0 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المستوى الأول ، الثالث المشهد {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 1 ، 0 ، 0 ، 1 ، 1 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{1 ، 1 ، 1 ، 0 ، 0 ، 1 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // أولاً المستوى ، المشهد الرابع {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 1 ، 1 ، 0 ، 0 ، 1 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{1 ، 1 ، 0 ، 0 ، 1 ، 1 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المستوى الأول ، المشهد الخامس {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 1 ، 1 ، 1 ، 0 ، 0 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{1 ، 0 ، 0 ، 1 ، 1 ، 1 ، 1 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المستوى الأول ، المشهد السادس {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، { 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{0 ، 0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 1} ، // المستوى الأول ، المشهد السابع {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 } ، {1 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 1 ، 1 ، // المستوى الأول ، الثامن المشهد {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 1 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}}} ، إعداد باطل () {initialize_modules () ؛ // قم بتشغيل وضبط كل الوحدات النمطية الأربعة start_level (0) ؛ حلقة باطلة () {move_player () ، // بدء الحلقة بالتحقق مما إذا كان اللاعب يتحرك إذا (التصادم ()) {// تحقق من مستوى التصادم = 0 ؛ // إذا كان الاصطدام صحيحًا ، فقم بإعادة تعيين مستوى start_level (المستوى) ؛ // إعادة تشغيل اللعبة} وإلا إذا (delay_count = 0 ؛ } else delay_count ++ ؛ تأخير (تأخير) ؛ // تأخير حسب سرعة اللعبة}

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

الخطوة السادسة: كشف الاصطدام

هذه الخطوة هي جزء مهم آخر من اللعبة ، فبدونها لن يكون هناك الكثير من التحدي! يمكنك فقط شق طريقك عبر العقبات دون أي عواقب! هذا لن يكون ممتعًا كثيرًا ، أليس كذلك؟ لذلك دعونا نجعل اللعبة أكثر تحديًا (وأكثر إمتاعًا!) من خلال إضافة هذا القسم من البرنامج:

حلقة فارغة() {

لاعب الخطوة()؛ // بدء الحلقة بالتحقق مما إذا كان اللاعب يتحرك إذا (التصادم ()) {// تحقق من مستوى التصادم = 0 ؛ // إذا كان التصادم صحيحًا ، فقم بإعادة تعيين مستوى start_level (المستوى) ؛ // إعادة تشغيل اللعبة} وإلا إذا (delay_count = 0 ؛ } else delay_count ++ ؛ تأخير (تأخير) ؛ // delay by speed of game} int collision () {// تحقق مما إذا كان اللاعب قد اصطدم بعقبة في وحدة المشهد = players_x / 8؛ العمود = players_x٪ 8 ؛ row = players_y؛ إذا (وحدة> 0) إذا (عقبة [مستوى] [مشهد] [عمود] [صف] == 1) // إذا كان موضع اللاعب هو نفسه عودة العائق (1) ؛ // كشف الاصطدام عودة حقيقية (0) ؛ // لا يوجد تضارب عودة خاطئة}

وها أنت ذا! الآن يمكنك الاستمتاع باللعبة أكثر بكثير! الآن سأوضح لك كيفية برمجة آخر مستويين من اللعبة! لقد انتهيت تقريبًا من هذه التعليمات ، وأنا متأكد من استعدادك لتجربتها!

الخطوة 7: آخر مستويين

مع اقتراب نهاية التدريب ، فإن هذين المستويين الأخيرين هما كل ما تحتاجه لإنهاء هذه اللعبة. ثم يمكنك تجربتها بنفسك! ها هو الكود:

عقبة البايت [المستويات] [المشاهد] [الأعمدة] [الصفوف] = {// المستوى الثاني والثالث ، 8 مشاهد ، 8 أعمدة ، 8 صفوف

{{{1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1} ، // المستوى الثاني ، المشهد الأول {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0} ، { 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1}} ، {{1 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1} ، // المستوى الثاني ، المشهد الثاني {0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 1 ، 0 ، 0 ، {0 ، 0 ، 1 ، 1 ، 1 ، 0 ، 0 ، 0 } ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، {1 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 1}} ، {{0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المستوى الثاني ، المشهد الثالث {0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 1 ، 1 ، 0} ، {0 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 1 ، 1 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0}} ، {{0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0} ، // المشهد الرابع من المستوى الثاني {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {0 ، 1 ، 1 ، 1 ، 1 ، 0 ، 1 ، 0} ، {0 ، 1 ، 0 ، 1 ، 1 ، 1 ، 1 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0}} ، {{0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0} ، // المستوى الثاني ، الفيفا المشهد الخامس {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 1 ، 0 ، 1 ، 0} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0}} ، {{0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، // المستوى الثاني ، المشهد السادس {0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 1 ، 1} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ،} ، {{0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، // المستوى الثاني ، المشهد السابع {0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {1 ، 1 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0 ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 1 ، 1} ، {0 ، 0، 1، 0، 0، 0، 0، 0}، {0، 0، 1، 0، 0، 0، 0، 0}}، {{0، 0، 0، 0، 0، 0، 1 ، 0} ، // المشهد الثامن من المستوى الثاني {1 ، 1 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 1 ، 1 ، 0 ، 0 ، 0 ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 1 ، 1} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{{0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد الأول {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0} } ، {{0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد الثاني {1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0}} ، {{0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد الثالث {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، { 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0}} ، {{0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد الرابع {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 } ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0}} ، {{0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد الخامس {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1} ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0}} ، {{0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، / المستوى الثالث ، المشهد السادس {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0}} ، {{0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، // المستوى الثالث ، المشهد السابع {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0}} ، {{0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، // المستوى الثالث ، المشهد الثامن { 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0} ، {1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0}}}} ؛

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

موصى به: