תוכן עניינים:

משחק Arduino Touch Tic Tac Toe: 6 שלבים (עם תמונות)
משחק Arduino Touch Tic Tac Toe: 6 שלבים (עם תמונות)

וִידֵאוֹ: משחק Arduino Touch Tic Tac Toe: 6 שלבים (עם תמונות)

וִידֵאוֹ: משחק Arduino Touch Tic Tac Toe: 6 שלבים (עם תמונות)
וִידֵאוֹ: צור משחק טטריס קלאסי באמצעות MIT App Inventor: מדריך שלב אחר שלב למתחילים 2024, יוני
Anonim
Image
Image
משחק Arduino Touch Tic Tac Toe
משחק Arduino Touch Tic Tac Toe
משחק Arduino Touch Tic Tac Toe
משחק Arduino Touch Tic Tac Toe
משחק Arduino Touch Tic Tac Toe
משחק Arduino Touch Tic Tac Toe

חברים יקרים ברוכים הבאים להדרכה נוספת של Arduino! במדריך מפורט זה אנו הולכים לבנות משחק Arduino Tic Tac Toe. כפי שאתה יכול לראות, אנו משתמשים במסך מגע ואנו משחקים נגד המחשב. משחק פשוט כמו Tic Tac Toe הוא היכרות מצוינת עם תכנות משחק ואינטליגנציה מלאכותית. למרות שלא נשתמש באלגוריתמים של בינה מלאכותית במשחק הזה, נבין מדוע נדרשים אלגוריתמים של בינה מלאכותית במשחקים מורכבים יותר.

פיתוח משחקים עבור Arduino אינו קל ודורש הרבה זמן. אבל אנחנו יכולים לבנות כמה משחקים פשוטים עבור Arduino כי זה כיף וזה יאפשר לנו לחקור כמה נושאי תכנות מתקדמים יותר, כמו בינה מלאכותית. זוהי חווית למידה נהדרת ובסוף יהיה לכם משחק נחמד לילדים!

בואו עכשיו לבנות את הפרויקט הזה.

שלב 1: קבל את כל החלקים

Image
Image
2.8
2.8

החלקים הדרושים לבניית פרויקט זה הם:

Uno Arduino ▶

מסך מגע בגודל 2.8 אינץ '▶

עלות הפרויקט נמוכה מאוד. זה רק 15 $

לפני שתנסה לבנות פרויקט זה אנא צפה בסרטון שהכנתי על צג המגע. צירפתי אותו במדריך זה. זה יעזור לך להבין את הקוד, ולכייל את מסך המגע.

שלב 2: תצוגת צבע המגע בגודל 2.8 אינץ 'עבור Arduino

Image
Image
2.8
2.8
2.8
2.8

גיליתי את מסך המגע הזה ב- banggood.com והחלטתי לקנות אותו על מנת לנסות להשתמש בו בכמה מהפרויקטים שלי. כפי שאתה יכול לראות התצוגה זולה, היא עולה בסביבות 11 $.

קבל את זה כאן ▶

התצוגה מציעה רזולוציה של 320x240 פיקסלים והיא מגיעה כמגן מה שהופך את החיבור עם Arduino לקל ביותר. כפי שאתה יכול לראות, התצוגה משתמשת כמעט בכל הסיכות הדיגיטליות והאנלוגיות של ה- Arduino Uno. כשמשתמשים במגן זה נותרו לנו רק 2 סיכות דיגיטליות וסיכה אנלוגית אחת לפרויקטים שלנו. למרבה המזל, התצוגה עובדת מצוין גם עם ה- Arduino Mega, כך שכאשר אנו זקוקים לסיכות נוספות נוכל להשתמש ב- Arduino Mega במקום ב- Arduino Uno. למרבה הצער תצוגה זו אינה פועלת עם לוח Arduino Due או לוח Wemos D1 ESP8266. יתרון נוסף של המגן הוא שהוא מציע חריץ מיקרו SD שהוא מאוד קל לשימוש.

שלב 3: בניית הפרויקט ובדיקתו

בניית הפרויקט ובדיקתו
בניית הפרויקט ובדיקתו
בניית הפרויקט ובדיקתו
בניית הפרויקט ובדיקתו
בניית הפרויקט ובדיקתו
בניית הפרויקט ובדיקתו

לאחר חיבור המסך ל- Arduino Uno, נוכל לטעון את הקוד ואנו מוכנים לשחק.

בהתחלה, אנו לוחצים על כפתור "התחל משחק" והמשחק מתחיל. הארדואינו משחק ראשון. לאחר מכן נוכל לשחק את המהלך שלנו פשוט על ידי נגיעה במסך. הארדואינו משחק אז את המהלך שלו וכן הלאה. השחקן שמצליח להציב שלושה סימנים בשורה אופקית, אנכית או אלכסונית מנצח את המשחק. כאשר המשחק מסתיים, יופיע מסך Game Over. לאחר מכן נוכל ללחוץ על כפתור ההפעלה שוב כדי להתחיל את המשחק מחדש.

הארדואינו טוב מאוד במשחק הזה. הוא ינצח ברוב המשחקים, או אם אתה שחקן טוב מאוד המשחק יסתיים בתיקו. תכננתי בכוונה את האלגוריתם הזה כדי לעשות כמה טעויות על מנת לתת לשחקן האנושי הזדמנות לנצח. על ידי הוספת שתי שורות נוספות לקוד המשחק, אנו יכולים להפוך את הארדואינו לבלתי אפשרי להפסיד את המשחק. אבל איך שבב של 2 $, מעבד Arduino, יכול לנצח את המוח האנושי? האם התוכנית שפיתחנו חכמה יותר ממוח האדם?

שלב 4: אלגוריתם המשחק

אלגוריתם המשחק
אלגוריתם המשחק
אלגוריתם המשחק
אלגוריתם המשחק

כדי לענות על שאלה זו, הבה נבחן את האלגוריתם שיישמתי.

המחשב תמיד משחק ראשון. ההחלטה הזו בלבד, מקלה הרבה יותר על המשחק של הארדואינו. המהלך הראשון הוא תמיד פינה. המהלך השני של הארדואינו הוא גם פינה אקראית מהשאר מבלי לדאוג למהלך השחקן כלל. מנקודה זו והלאה, הארדואינו בודק תחילה אם השחקן יכול לנצח בצעד הבא וחוסם את המהלך הזה. אם השחקן לא יכול לנצח במהלך אחד, הוא משחק מהלך פינתי אם הוא זמין או אקראי מהשאר. זהו, האלגוריתם הפשוט הזה יכול לנצח את השחקן האנושי בכל פעם או במקרה הגרוע ביותר המשחק יגרור תיקו. זה לא האלגוריתם הטוב ביותר של משחק הטיק טק, אבל אחד הפשוטים ביותר.

ניתן ליישם את האלגוריתם הזה בארדואינו בקלות, מכיוון שמשחק הטיק טק טו הוא פשוט מאוד, ונוכל לנתח אותו ולפתור אותו. אם נעצב את עץ המשחק נוכל לגלות כמה אסטרטגיות מנצחות וליישם אותן בקלות בקוד או שנוכל לתת למעבד לחשב את עץ המשחק בזמן אמת ולבחור את המהלך הטוב ביותר בעצמו. כמובן שהאלגוריתם בו אנו משתמשים במשחק זה הוא פשוט מאוד, מכיוון שהמשחק פשוט מאוד. אם ננסה לעצב אלגוריתם מנצח לשחמט, גם אם נשתמש במחשב המהיר ביותר לא נוכל לחשב את עץ המשחק מזה אלף שנה! עבור משחקים כאלה, אנו זקוקים לגישה נוספת, אנו זקוקים לכמה אלגוריתמים של בינה מלאכותית וכמובן כוח עיבוד עצום. עוד על כך בסרטון עתידי.

שלב 5: קוד הפרויקט

קוד הפרויקט
קוד הפרויקט

בואו נסתכל מהר על הקוד של הפרויקט. אנו זקוקים לשלוש ספריות על מנת שהקוד יערך.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. מסך מגע:

כפי שאתה יכול לראות, אפילו משחק פשוט כזה דורש יותר מ -600 שורות קוד. הקוד מורכב, כך שלא אנסה להסביר אותו במדריך קצר. אולם אראה לך את יישום האלגוריתם למהלכי הארדואינו.

בהתחלה, אנו משחקים בשתי פינות אקראיות.

<int firstMoves = {0, 2, 6, 8}; // ישתמש במיקומים אלה תחילה עבור (counter = 0; counter <4; counter ++) // ספירת המהלכים הראשונים שהושמעו {if (board [firstMoves [counter]! = 0) // המהלך הראשון מושמע על ידי מישהו {movesPlayed ++; }} עשה {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; אם (לוח [c] == 0) {עיכוב (1000); לוח [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

לאחר מכן, בכל סיבוב אנו בודקים אם השחקן יכול לנצח במהלך הבא.

int checkOpponent ()

{if (לוח [0] == 1 && לוח [1] == 1 && לוח [2] == 0) החזר 2; אחרת אם (לוח [0] == 1 && לוח [1] == 0 && לוח [2] == 1) החזר 1; אחרת אם (לוח [1] == 1 && לוח [2] == 1 && לוח [0] == 0) החזר 0; אחרת אם (לוח [3] == 1 && לוח [4] == 1 && לוח [5] == 0) החזר 5; אחרת אם (לוח [4] == 1 && לוח [5] == 1 && לוח [3] == 0) החזר 3; אחרת אם (לוח [3] == 1 && לוח [4] == 0 && לוח [5] == 1) החזר 4; אחרת אם (לוח [1] == 0 && לוח [4] == 1 && לוח [7] == 1) החזר 1; אחרת להחזיר 100; }

אם כן אנו חוסמים את המהלך הזה, לרוב. אנחנו לא חוסמים את כל המהלכים על מנת לתת לשחקן האנושי סיכוי לנצח. האם תוכל למצוא אילו מהלכים אינם חסומים? לאחר חסימת המהלך, אנו משחקים פינה שנותרה, או מהלך אקראי. אתה יכול ללמוד את הקוד וליישם אלגוריתם משלך ללא תחרות. כמו תמיד אתה יכול למצוא את הקוד של הפרויקט המצורף להוראה זו.

הערה: מכיוון שבנגגוד מציעה את אותה תצוגה עם שני מנהלי התקן תצוגה שונים, אם הקוד לעיל אינו פועל, שנה את הפונקציה initDisplay לפעולה הבאה:

void initDisplay ()

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

שלב 6: מחשבות ושיפורים אחרונים

מחשבות ושיפורים אחרונים
מחשבות ושיפורים אחרונים

כפי שאתה יכול לראות, אפילו עם Arduino Uno, אנו יכולים לבנות אלגוריתם ללא תחרות למשחקים פשוטים. הפרויקט הזה הוא נהדר, כי הוא קל לבנות, ובמקביל מבוא מצוין לבינה מלאכותית ותכנות משחקים. אנסה לבנות כמה פרויקטים מתקדמים יותר עם בינה מלאכותית בעתיד באמצעות ה- Raspberry Pi החזק יותר, אז הישאר מעודכן! אשמח לשמוע את דעתכם על הפרויקט.

אנא פרסם את הערותיך למטה ואל תשכח לאהוב את המדריך אם אתה מוצא מעניין. תודה!

מוּמלָץ: