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

Flappy Bird בתצוגת ATtiny85 ו- OLED Display1306: 6 שלבים (עם תמונות)
Flappy Bird בתצוגת ATtiny85 ו- OLED Display1306: 6 שלבים (עם תמונות)

וִידֵאוֹ: Flappy Bird בתצוגת ATtiny85 ו- OLED Display1306: 6 שלבים (עם תמונות)

וִידֵאוֹ: Flappy Bird בתצוגת ATtiny85 ו- OLED Display1306: 6 שלבים (עם תמונות)
וִידֵאוֹ: The Easiest Flappy Bird Tutorial Ever? - Beginner Javascript Game 2024, נוֹבֶמבֶּר
Anonim
Image
Image
החומרה
החומרה

היי לכולם, היום אני הולך להראות לך שיבוט ציפורים רגוע שיצרתי, וכיצד תוכל לבצע משחק דומה. בעצם אעבור איתך על הקוד שלי ואסביר כיצד הוא פועל בכל שלב. משחק זה בנוי להפעלה על ATtiny85 בשעון של 1MHz, עם צג OLED I2C. הָלְאָה!

שלב 1: החומרה

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

המשחק שלי דורש שני כפתורים, ATtiny85, מסך I2C OLED 128x64px ומקור כוח כלשהו. כרטיס הביקור שלי/מסוף המשחקים שלי: מסך ATtiny85 ו- OLED מראה לכם כיצד לבנות לוח שיש בו כל מה שאתם צריכים! אם אינך מעוניין להכין את הלוח שלי, צא מהקרש שלך ואני אגיד לך את המפרט. אתה יכול להשתמש בכל גרסה של ATtiny85. אני ממליץ על תצוגות OLED כמו זו.

  1. חברו צד אחד של שני לחצנים לסיכות 2 ו -3 ב- ATtiny85 שלכם. על חוטים אלה, הוסף גם נגד 10k אוהם המחובר לקרקע (נגד משיכה).
  2. חברו את הצד השני של לחצני הלחיצה הללו למתח. כאשר הכפתור לא נלחץ, מצב הסיכה יהיה נמוך. כאשר הוא נלחץ, מצב הסיכה יהיה גבוה.
  3. חבר את סיכה 7 לסיכת ה- SCL בתצוגה, ואת סיכה 5 לסיכה ה- SDA בתצוגה. חברו את פיני ההפעלה (VCC ו- GND) בתצוגה בהתאם.
  4. לבסוף, חבר את סיכה 4 ב- ATtiny לאדמה ואת סיכה 8 למתח.

שלב 2: התוכנה

התוכנה!
התוכנה!

מצורפת כאן תיקייה עם כל הקבצים הדרושים לך להפעלת המשחק. שניים מהקבצים, FlappyBird.ino ו- WallFunctions.h, מקבלים הערות טובות להנאתך מהקריאה. אתה יכול להעלות את הסקיצה של FlappyBird.ino ל- ATtiny85 שלך (במהירות 1MHz) ולשחק בחוץ! אם למידת התיאוריה מאחורי המשחק הזה מעניינת אותך, או שאתה רוצה ליצור משחק משלך, אז המשך לקרוא!

עדיין יש כמה בעיות במשחק שלי. I2C היא לא הדרך הטובה ביותר להעביר נתונים בשום צורה. על פי הודעה זו, התצוגה יכולה לקבל נתונים רק בסביבות 100KHz, כך שגם אם נעלה את מהירות השעון ATtiny ל- 8MHz ערוץ I2C עדיין יהיה צוואר הבקבוק. המסך יכול להפיק בערך 10fps לכל היותר. ככל שהתצוגה צריכה לצייר יותר תמונות נפרדות, התהליך כולו יהיה איטי יותר. לפיכך, המשחק שלי די קל מכיוון שאי אפשר לגרום לקירות לנוע מהר מאוד על פני המסך! להלן כמה אתגרים עבורך אם אתה חושב שאתה עומד במשימה:

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

שלב 3: Flappy Bird ATtiny85: תיאוריה

Flappy Bird ATtiny85: תיאוריה
Flappy Bird ATtiny85: תיאוריה

למרות שהתצוגה שבה אנו משתמשים יש 64 פיקסלים של גובה לשימוש למשחק, אפשר למקם אלמנטים רק בלוקים של 8 פיקסלים. לפיכך, ישנם רק 8 קואורדינטות y אפשריות. כדי להקל על העניינים, בתוכנה חילקתי את כל המסך בצורה זו, ויצרתי רשת של 16 בלוקים על 8 בלוקים, כאשר כל בלוק הוא 8x8 פיקסלים. כדי למלא כל בלוק, כל ספרייט במשחק הוא 8x8 פיקסלים. זה הופך את הכל להרבה יותר קל לניהול. אם אתה מסתכל על התמונה למעלה, אתה יכול לראות איך חילקתי את המסך. כל קיר מורכב מ -6 בלוקים, עם חור בגובה של 2 בלוקים, מה שהופך את הגובה הכולל של כל קיר ל -8 בלוקים.

בתוכנית, כל קיר מיוצג כמבנה, הנקרא Wall. לכל מבנה קיר יש שני מאפיינים - holePosition ועמודה. 'holePosition' הוא מספר 0-6, מכיוון שיש רק 7 מיקומים אפשריים בקיר של 8 בלוקים לחור בגובה של 2 רחובות. 'עמודה' היא מספר 0-15, מכיוון שישנן 16 עמודות של בלוקים על המסך.

מוּמלָץ: