ללמוד איך לכתוב קוד יכול להיות מסע ארוך. לא רק שאתה צריך למצוא משאבים שיעזרו לך ללמוד, אלא שאתה גם צריך למצוא רעיונות לפרויקטים מרגשים שישמרו על החינוך שלך על המסלול.
משחקי וידאו מספקים הזדמנות מצוינת לתכנת משהו שאתה יכול ליהנות ממנו. והם גם יכולים ללמד אותך את היסודות שאתה צריך כדי להיות מתכנת טוב. מאמר זה בוחן פרויקט משחקי וידאו Arduino עשה זאת בעצמך כדי להתחיל.
מה אנחנו מכינים ולמה?
לפני שצולל לחלק המדריך של מאמר זה, הגיוני לחקור מה אנחנו מכינים ומדוע בחרנו בו לפרויקט זה. כמה אתגרים מגיעים עם ייצור משחקים למכשירים כמו Arduinos.
- שטח אחסון: רוב לוחות ארדואינו מגיעים עם מעט מאוד זיכרון RAM או זיכרון פלאש. זה לא רק מגביל את כמות הקוד שהם יכולים להריץ, אלא שהוא גם מציב אתגרים בכל הקשור לעבודה עם משתנים.
- כוח עיבוד: ל-Arduino שהשתמשנו בו יש מעבד בעל הספק נמוך, כך שאי אפשר ליצור עבורו יישומים זוללים משאבים.
- רכיבים מוגבלים: לארדואינו יש הרבה פינים זמינים, אבל רכיבים רבים צריכים יותר מאחד. זה מגביל אותנו בכל הנוגע לפקדים וליציאות תצוגה.
עם האתגרים האלה בחשבון, החלטנו ליצור מכשיר כף יד המריץ משחק מבוסס תגובה פשוט מאוד. אתה יכול בקלות ליצור משחקים אחרים עבור החומרה איתה אנחנו עובדים, ואנו ממליצים לך להיות יצירתי.
המשחק עצמו מאוד פשוט. שלושה בלוקים מופיעים על המסך, שניים מתארים ואחד מלא, כל אחד עם כפתור פיזי מתאים למטה. השחקן צריך ללחוץ על הכפתור הימני בכל סיבוב כדי להמשיך לשחק, ואם הוא לוחץ על הכפתור הלא נכון או שנגמר הזמן המשחק נגמר. כל לחיצה מוצלחת על כפתור מעניקה נקודות. המשחק מעלה לאט את הקושי שלו על ידי הפחתת זמן התגובה הזמין.
חיווט את תצוגת ה-OLED, הארדואינו והלחצנים
חיבור משחק כף היד שלך הוא השלב הראשון בתהליך זה. כפי שאתה יכול לראות בתרשים המעגל שלמעלה, אתה לא צריך לעשות הרבה חיבורים כדי להתחיל, ואפילו אתה יכול להשתמש בלוח לחם עבור הפרויקט הזה.
כבר פרסמנו מדריך שיעזור לך לעשות זאת חוט כפתורי לחיצה לארדואינו. שֶׁלָנוּ פרויקט Arduino Aquarium Monitor מראה לך כיצד להשתמש בתצוגת OLED עם מיקרו-בקר כמו זה. ככזה, אנו נתמקד בקוד עבור פרויקט זה להמשך מאמר זה.
קוד משחק כף יד Arduino
עיצוב נכון ומבני קבצים מסודרים חשובים מאוד למתכנתים מתחילים וותיקים כאחד. אתה תודה לעצמך על שהקדשת מזמנך לארגן את הקוד שלך בצורה מסודרת אם אי פעם תצטרך לחזור דרכו.
הקוד משתמש בקובץ INO ראשי כדי להוות את הבסיס לפרויקט שלנו. יש גם קובץ C++ לשליטה בתצוגה שלנו, קובץ C++ להפעלת קוד המשחק הראשי וקובץ ספריית Arduino כדי לחבר את הכל יחד.
אנו נצלול עמוק יותר לתוך הקוד הזה להלן, אך אנו ממליצים לך להציץ בקוד המוער שלנו פרויקט משחק כף יד Arduino ב-GitHub. זה יעזור לך להתייחס אליו לצד מאמר זה.
קובץ הספרייה (library.h)
קובץ הספרייה שלנו ממלא תפקיד מכריע, ומחבר את קבצי הפרויקט האחרים שלנו יחד כך שהם יכולים לעבוד כאפליקציה אחת. קובץ זה מכיל הצהרות לכלול את ספריית Arduino.h ואת כל הפונקציות בקוד המשחק שלנו שצריכות לעבוד בין הקבצים שלנו. בלי זה, הקוד שלנו פשוט לא יעבוד.
קובץ ה-INO הראשי (main.ino)
כמו פרויקטים רבים של Arduino, זה התחיל עם תבנית ברירת המחדל שסופקה על ידי Arduino IDE. התבנית הזו נותנת את זה להכין ו לוּלָאָה פונקציות שבהן אנו משתמשים כדי לקרוא לפונקציות בקבצים האחרים שלנו. לקובץ זה יש גם הצהרה לכלול את הקובץ library.h.
פונקציית ההגדרה אידיאלית לאתחול התצוגה והלחצנים שלנו, מכיוון שהיא פועלת פעם אחת בלבד כאשר ה-Arduino מאופס או מופעל. לשם כך, אנו קוראים לפונקציה disSetup() בקובץ התצוגה שלנו ולפונקציה butSetup() בקובץ המשחק שלנו.
פונקציית loop() שלנו פשוטה אפילו יותר מפונקציית setup(), עם קריאה בודדת בלבד לפונקציה gameState() שנמצאת בקובץ המשחק שלנו. אנו נחקור זאת בפירוט רב יותר בהמשך המאמר.
קובץ קוד התצוגה (display.cpp)
אנו משתמשים בתצוגת SSD1306 OLED עבור הפרויקט הזה, אם כי אתה יכול להשתמש בסוג אחר של תצוגה אם תערוך את הקוד בהתאם. קובץ זה מתחיל עם הכללת קובץ הספרייה, ספרייה.ח. לאחר מכן הוא כולל הצהרות לספריות SPI, Wire, Adafruit_GX ו-Adafruit_SSD1306. לאחר מכן, הוא מגדיר כמה קבועים כדי לספק הגדרות לתצוגה.
הפונקציה הראשונה, dissetup, מאתחל את התצוגה ומציג מסך פתיחה של לוגו. לאחר מכן הוא מנקה את התצוגה לאחר המתנה של כ-2 שניות. הקובץ הראשי שלנו, main.ino, קורא ל-disSetup בתוכו להכין פוּנקצִיָה.
שאר הפונקציות בקובץ זה, מלבד timerBar(), יוצרות את המסכים השונים הנראים לאורך המשחק. קובץ המשחק, game.cpp, קורא לכל אחת מהפונקציות הללו.
- startGame(): פונקציה זו שולטת במסך הראשון שהשחקן רואה. זה פשוט שואל אם הם מוכנים בזמן שמתקשרים ל switchInstance פונקציה שנמצאת בקובץ המשחק.
- starterGame(): ברגע שהשחקן מתחיל את המשחק, מסך זה מציג ספירה קצרה לאחור. לאחר מכן זה משנה את מצב המשחק כך שיתאים.
- inGame(): זוהי המורכבת ביותר מבין פונקציות התצוגה שלנו, תוך שימוש בשלושה משתנים לטעינת כל סיבוב במשחק. זה מתחיל בהצהרת if שקובעת איזה משלושת המשבצות למלא, ולאחר מכן מציגה את המשבצות ואת הרמה והניקוד של השחקן.
- timerBar(): פונקציה זו משתמשת במשתנה כדי להציג סרגל טיימר בתחתית המסך. זה מראה לשחקן כמה זמן יש לו לכל סיבוב.
- successScreen(): זוהי פונקציה פשוטה שמציגה הודעה בכל פעם שהשחקן משלים סיבוב בהצלחה.
- endGame(): פונקציה אחרונה זו מציגה משחק על מסך עם הניקוד של השחקן ואפשרות להתחיל את המשחק מחדש.
קובץ קוד המשחק (game.cpp)
לבסוף, בתור הקובץ האחרון לחקור, הגיע הזמן להסתכל על קוד המשחק. קובץ זה, כמו האחרים, מתחיל בהכללת הקובץ library.h. הוא מכיל גם רשימה ארוכה של משתנים שונים של מספרים שלמים בהם אנו משתמשים במהלך המשחק.
תמצא את הפונקציה butSetup() לפני כל דבר אחר. הפונקציה setup() בקובץ הראשי שלנו קוראת ל-butSetup. פונקציה זו משתמשת במשתנים כדי להגדיר את הכפתורים שלנו כקלט שנוכל לקרוא מאוחר יותר.
- switchInstance(): פונקציה זו עוברת בין מופעים של המשחק, ממסך ההתחלה למשחק ולמסכי משחק מעל. הוא מקבל משתנה שיגיד לו לאיזה מצב משחק לעבור. הצהרת if ממתינה ללחיצת כפתור כדי להתחיל את המשחק ממצב startGame(). משפט if נוסף מתחיל את המשחק שוב ממצב endGame().
- gameState(): פונקציה זו מגדירה את קושי המשחק על סמך הניקוד של השחקן וקוראת לפונקציה הנכונה בהתאם למצב המשחק. זה מתחיל בסדרה של הצהרות if שמגדירות משתנים על סמך הניקוד של השחקן, ואחריה עוד הצהרות if כדי לבדוק את המופע הנוכחי.
- tileSelector(): פונקציה זו יוצרת מספר אקראי בין 0 ל-2 שאומר למשחק איזה משלושת המשבצות למלא בכל זמן נתון.
- theGame(): פונקציה זו היא ללא ספק החשובה מכולן. זה קורא ל tileSelector ו במשחק פונקציות, בחירת אריח חדש והצגתו על המסך. לאחר מכן, תמצאו לולאת for שפועלת כטיימר לכל סיבוב. הוא מכיל קבוצה של הצהרות אם הקולטות לחיצות על כפתורים וקובעות אם הן נכונות.
בניית משחק ארדואינו כף יד משלך
מאמר זה הוא נלווה לקוד הפרויקט שנמצא ב-GitHub. תוכל למצוא מידע נוסף על שורות הקוד הספציפיות בהן השתמשנו בהערות בקבצים אלה. אבל אתה גם מוזמן פשוט לטעון אותו על ה-Arduino שלך וליהנות מהכיף.
יצירתיות היא המפתח בעולם של פיתוח משחקים, ואנו ממליצים לך לעבוד על רעיונות המשחקים שלך לצד זה.
10 פרויקטי הרדיו הטובים ביותר של Arduino
קרא הבא
נושאים קשורים
- תִכנוּת
- עשה זאת בעצמך
- רעיונות לפרויקט עשה זאת בעצמך
- הדרכות לפרויקט עשה זאת בעצמך
- ארדואינו
- תִכנוּת
על הסופר
סמואל הוא סופר טכנולוגיה מבוסס בריטניה עם תשוקה לכל מה שקשור ל-DIY. לאחר שהקים עסקים בתחומי בניית אתרים והדפסת תלת מימד, לצד עבודתו ככותב שנים רבות, סמואל מציע תובנה ייחודית לעולם הטכנולוגיה. הוא מתמקד בעיקר בפרויקטים טכנולוגיים של עשה זאת בעצמך, הוא לא אוהב יותר מאשר לחלוק רעיונות מהנים ומרגשים שתוכלו לנסות בבית. מחוץ לעבודה, בדרך כלל ניתן למצוא את סמואל רוכב על אופניים, משחק במשחקי מחשב או מנסה נואשות לתקשר עם סרטן המחמד שלו.
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
לחץ כאן כדי להירשם