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

لعبة اردوينو تاتش تيك تاك تو: 6 خطوات (مع صور)
لعبة اردوينو تاتش تيك تاك تو: 6 خطوات (مع صور)

فيديو: لعبة اردوينو تاتش تيك تاك تو: 6 خطوات (مع صور)

فيديو: لعبة اردوينو تاتش تيك تاك تو: 6 خطوات (مع صور)
فيديو: Tic Tac Touch 2024, شهر نوفمبر
Anonim
Image
Image
اردوينو اللمس لعبة تيك تاك تو
اردوينو اللمس لعبة تيك تاك تو
اردوينو اللمس لعبة تيك تاك تو
اردوينو اللمس لعبة تيك تاك تو
اردوينو اللمس لعبة تيك تاك تو
اردوينو اللمس لعبة تيك تاك تو

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

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

دعونا نبني هذا المشروع الآن.

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

Image
Image
2.8
2.8

الأجزاء اللازمة لبناء هذا المشروع هي كالتالي:

اردوينو أونو ▶

شاشة تعمل باللمس مقاس 2.8 بوصة

تكلفة المشروع منخفضة للغاية. إنه 15 دولارًا فقط

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

الخطوة 2: شاشة العرض الملونة التي تعمل باللمس مقاس 2.8 بوصة لـ Arduino

Image
Image
2.8
2.8
2.8
2.8

لقد اكتشفت هذه الشاشة التي تعمل باللمس على موقع banggood.com وقررت شرائها لمحاولة استخدامها في بعض مشاريعي. كما ترى ، فإن الشاشة غير مكلفة ، فهي تكلف حوالي 11 دولارًا.

احصل عليه هنا ▶

توفر الشاشة دقة 320 × 240 بكسل وتأتي كدرع يجعل الاتصال بـ Arduino أمرًا سهلاً للغاية. كما ترى ، تستخدم الشاشة جميع المسامير الرقمية والتناظرية لـ Arduino Uno تقريبًا. عند استخدام هذا الدرع ، نترك فقط دبابيس رقمية ودبوس تمثيلي واحد لمشاريعنا. لحسن الحظ ، تعمل الشاشة بشكل جيد مع Arduino Mega أيضًا ، لذلك عندما نحتاج إلى المزيد من المسامير ، يمكننا استخدام Arduino Mega بدلاً من Arduino Uno. للأسف ، لا تعمل هذه الشاشة مع لوحة Arduino Due أو لوحة Wemos D1 ESP8266. ميزة أخرى للدرع هي أنه يوفر فتحة micro SD سهلة الاستخدام للغاية.

الخطوة الثالثة: بناء المشروع واختباره

بناء المشروع واختباره
بناء المشروع واختباره
بناء المشروع واختباره
بناء المشروع واختباره
بناء المشروع واختباره
بناء المشروع واختباره

بعد توصيل الشاشة بـ Arduino Uno ، يمكننا تحميل الكود ونحن جاهزون للعب.

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

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

الخطوة 4: خوارزمية اللعبة

خوارزمية اللعبة
خوارزمية اللعبة
خوارزمية اللعبة
خوارزمية اللعبة

للإجابة على هذا السؤال ، دعونا نلقي نظرة على الخوارزمية التي طبقتها.

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

يمكن تنفيذ هذه الخوارزمية في Arduino بسهولة ، لأن لعبة Tic Tac Toe بسيطة للغاية ، ويمكننا تحليلها وحلها بسهولة. إذا قمنا بتصميم شجرة اللعبة ، يمكننا اكتشاف بعض الاستراتيجيات الفائزة وتنفيذها بسهولة في الكود أو يمكننا السماح لوحدة المعالجة المركزية بحساب شجرة اللعبة في الوقت الفعلي واختيار أفضل خطوة بمفردها. بالطبع ، الخوارزمية التي نستخدمها في هذه اللعبة بسيطة للغاية ، لأن اللعبة بسيطة للغاية. إذا حاولنا تصميم خوارزمية فائزة للشطرنج ، حتى لو استخدمنا أسرع كمبيوتر ، فلن نتمكن من حساب شجرة اللعبة في ألف عام! لألعاب مثل هذه ، نحتاج إلى نهج آخر ، نحتاج إلى بعض خوارزميات الذكاء الاصطناعي وبالطبع قوة معالجة ضخمة. المزيد عن هذا في فيديو مستقبلي.

الخطوة 5: كود المشروع

كود المشروع
كود المشروع

دعونا نلقي نظرة سريعة على كود المشروع. نحتاج إلى ثلاث مكتبات حتى يتم ترجمة الشفرة.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. شاشة تعمل باللمس:

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

في البداية ، نلعب زاويتين عشوائيتين.

<int firstMoves = {0، 2، 6، 8} ؛ // سيستخدم هذه المواضع أولاً لـ (counter = 0؛ counter <4؛ counter ++) // عدد الحركات الأولى التي تم لعبها {if (board [firstMoves [counter]! = 0) // تم لعب الخطوة الأولى بواسطة شخص ما {movePlayed ++؛ }} do {if (move <= 2) {int randomMove = random (4)؛ int c = firstMoves [randomMove] ؛ إذا (لوحة [ج] == 0) {تأخير (1000) ؛ اللوحة [ج] = 2 ؛ Serial.print (firstMoves [randomMove]) ؛ Serial.println () ، drawCpuMove (firstMoves [randomMove]) ، ب = 1 ؛ }}

بعد ذلك ، في كل جولة نتحقق مما إذا كان بإمكان اللاعب الفوز في الخطوة التالية.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) إرجاع 2 ؛ وإلا إذا (board [0] == 1 && board [1] == 0 && board [2] == 1) إرجاع 1 ؛ وإلا إذا (board [1] == 1 && board [2] == 1 && board [0] == 0) إرجاع 0 ؛ وإلا إذا (board [3] == 1 && board [4] == 1 && board [5] == 0) تُرجع 5 ؛ وإلا إذا (board [4] == 1 && board [5] == 1 && board [3] == 0) إرجاع 3 ؛ وإلا إذا (board [3] == 1 && board [4] == 0 && board [5] == 1) إرجاع 4 ؛ وإلا إذا (board [1] == 0 && board [4] == 1 && board [7] == 1) إرجاع 1 ؛ آخر إرجاع 100 ؛ }

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

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

initDisplay باطلة ()

{tft.reset () ، tft.begin (0x9341) ، tft.setRotation (3) ، }

الخطوة 6: الأفكار والتحسينات النهائية

الأفكار والتحسينات النهائية
الأفكار والتحسينات النهائية

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

يرجى نشر تعليقاتك أدناه ولا تنسى الإعجاب بالتعليمات إذا وجدت مثيرة للاهتمام. شكرا!

موصى به: