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

משחק סלעי שטח ארדואינו: 3 שלבים
משחק סלעי שטח ארדואינו: 3 שלבים

וִידֵאוֹ: משחק סלעי שטח ארדואינו: 3 שלבים

וִידֵאוֹ: משחק סלעי שטח ארדואינו: 3 שלבים
וִידֵאוֹ: טיול ג'יפים בסרבר שלנו ב samp חלק 1 1\2 2024, יולי
Anonim
משחק סלעי חלל ארדואינו
משחק סלעי חלל ארדואינו

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

לאחרונה ראיתי שמישהו עשה גרסה פשוטה של שתי רמות של "ציפור פלאפיי" שהושמעה על מסך LCD רגיל של 1602. חשבתי שזה משהו שהנכדים יאהבו ולכן החלטתי לעשות וריאציה משלי מאפס. לגרסת 1602 יש רק שתי רמות אז החלטתי להשתמש ב- LCD 2004 (20x4) במקום להגדיל מעט את קושי המשחק. בחרתי גם להפוך אותו ל"אסטרואידים "יותר על ידי כך שהשחקן יוביל" ספינה "במבוך של" סלעי חלל ". גם אם אינך מעוניין לבנות את המשחק, ייתכן שיהיו כמה אלמנטים של התוכנה שתוכל להשתמש בהם באחד הפרויקטים שלך.

שלב 1: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

החומרה יכולה להתבסס על כמעט כל גרסת Arduino. עשיתי את אב טיפוס באמצעות ננו ואז שרפתי את הקוד לשבב ATMega328. זהו אותו שבב המשמש את ה- Nano אך השימוש בו כשלעצמו מאפשר בנייה קומפקטית יותר ופחות צריכת חשמל. כפי שאתה יכול לראות, בניתי את המעגל על לוח לחם קטן המתחבט במודול ה- LCD. ההיבט הנוסף ששונה הוא שהנאנו פועל ב -16 מגה-הרץ באמצעות קריסטל חיצוני אך בחרתי להשתמש במתנד 8 מגה-הרץ המובנה עבור שבב ATMega328. זה חוסך חלקים וכוח.

LCD LCD מתממשק ל- Arduino באותה צורה כמו 1602 LCD. הבדל מעניין הוא בטיפול במיקומי התצוגה. ברור שיש הבדל כי יש ארבע קווים במקום שניים, אך בשנת 2004 הקו השלישי הוא הרחבה של הקו הראשון והקו הרביעי הוא הרחבה של הקו השני. במילים אחרות, אם הייתה לך תוכנית בדיקה שרק שלחה שורה של תווים אל ה- LCD, התו ה -21 היה מופיע בתחילת השורה השלישית והתו ה -41 עוטף חזרה לתחילת השורה הראשונה. אני משתמש במאפיין הזה בתוכנה בכדי להכפיל את אורך המבוך.

החלטתי להפעיל את סוללת הגרסה שלי כך שהשתמשתי בסוללה נפוצה של 18650 ליתיום, 3.6 וולט. זה דרש ממני להוסיף לוח קטן כדי לאפשר טעינת USB ועוד לוח קטן כדי להגביר את מתח הסוללה ל -5 וולט עבור ה- LCD ושבב ATMega. התמונות מציגות את המודולים בהם השתמשתי אך יש גם מודולים מסוג All-in-One שעושים את שתי הפונקציות.

שלב 2: תוכנה

התוכנה זהה הן לשבבי ה- Nano והן לשבב ATMega328. ההבדל היחיד הוא בשיטת התכנות. אני משתמש בגירסת עצמות משלי של תוכנת LCD 1602 ותוכנת ה- LCD בפרויקט זה מבוססת על כך. הייתי צריך להוסיף יכולות להתייחס לשורות הנוספות של התצוגה 2004 וגם הוספתי שגרות לשינוי התצוגה. משמרת התצוגה מספקת את אפקט התנועה של ה"סלעים "בעבר ה"ספינה".

כפי שצוין קודם לכן, שורות 1 ו -3 יוצרות תור מעגלי וגם שורות 2 ו -4 עושות את זה. המשמעות היא שאחרי 20 משמרות, קווים 1 ו -3 מוחלפים ושורות 2 ו -4 מוחלפות. לאחר 40 משמרות הקווים חזרו למקומם המקורי. בגלל התנהגות זו, המבוך המקורי בן 20 התווים הופך להיות שונה לחלוטין כאשר השורות מתחלפות. זה הפך את החיים למעניינים כשניסיתי ליצור מבוך. סוף סוף רק פתחתי גיליון אלקטרוני של Excel כדי שאוכל להתוות את הנתיב מבלי לשנות את התוכנה כל הזמן. התוכנה המסופקת כאן כוללת שתי גרסאות של המבוך (אחת מגיבה) כך שתוכל לבחור איזו מהן אתה רוצה או להמציא משלך.

במקור רציתי שזה יהיה מספיק פשוט כדי שהנכדים הצעירים יוכלו לשחק את זה, אבל רציתי שיהיה לזה אתגר נוסף אם הם (או מישהו אחר) יתמכו בזה יותר מדי. המשחק מתחיל עם קצב המשמרות שנקבע על שנייה אחת. קצב הטיק הפנימי הוא 50ms כך שזה אומר שיש 20 מרווחים שבמהלכם ניתן ללחוץ על כפתורי למעלה/למטה. למעשה, כפתור שנלחץ צורך 2 טיקים מכיוון שמרווח של 50ms משמש לאיתור העיתונות ומרווח נוסף של 50ms משמש להמתנה לשחרור. עם מבוך ברירת המחדל מספר הלחיצות המרבי הנדרש לפני המשמרת הבאה הוא שלוש. הדרך הפשוטה להגדיל את הקושי במשחק היא לקצר את הזמן בין משמרות, כך שכמה שורות קוד עושות בדיוק את זה כשהציון עולה. קצב המשמרת מוגדר להאיץ ב- 50ms בכל 20 משמרות, כשהשיעור המינימלי מוגבל ל -500ms. קל לשנות פרמטרים אלה.

מלבד שינוי קצב המשמרת, ההיגיון העיקרי בתוכנה הוא הזזת "הספינה" וקביעה אם "הספינה" התנגשה ב"סלע ". פונקציות אלה מנצלות את מערך ה"סלע/שטח "המוגדר וגם את המערך המגדיר את מיקומי הזיכרון בתצוגה. ספירת המשמרות תואמת את אורך הקו של ה- LCD (0-19) ומשמשת כאינדקס למערכים אלה. ההיגיון מסובך במקצת מכך שהקווים מחליפים כל 20 משמרות. היגיון דומה משמש לקביעת המיקום של "הספינה" שיכול להיות בכל אחת מארבע הקווים.

הציון עבור כל משחק הוא פשוט ספירת מספר המשמרות שהתרחשו והציון הגבוה נשמר ב- EEROM הפנימי של המיקרו -בקר. ספריית EEPROM משמשת לקריאה וכתיבה לזיכרון זה. השגרה הקיימת מאפשרת קריאה/כתיבה של בתים בודדים וקוראים/כותבים של ערכי נקודה צפה. ערך של 0xA5 מאוחסן במיקום EEROM הראשון כדי להצביע על ציון גבוה שנשמר. אם ערך זה קיים בעת ההפעלה, נקרא ומופיע ערך הנקודה הצפה של הציון הגבוה. אם ערך 0xA5 אינו קיים, אז נקרא שגרה לאתחל את הציון הגבוה לערך 1. אותה שגרה נקראת אם רוצים איפוס של הציון הגבוה. הציון הגבוה מוחזר לערך 1 על ידי לחיצה ארוכה על אחד מכפתורי העלייה/למטה ולאחר מכן לחיצה לרגע על כפתור האיפוס.

שלב 3: משחק

משחק את המשחק
משחק את המשחק
משחק את המשחק
משחק את המשחק

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

מוּמלָץ: