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

פלטפורמה עם אינסוף רמות ב- GameGo עם ארקייד Makecode: 5 שלבים (עם תמונות)
פלטפורמה עם אינסוף רמות ב- GameGo עם ארקייד Makecode: 5 שלבים (עם תמונות)

וִידֵאוֹ: פלטפורמה עם אינסוף רמות ב- GameGo עם ארקייד Makecode: 5 שלבים (עם תמונות)

וִידֵאוֹ: פלטפורמה עם אינסוף רמות ב- GameGo עם ארקייד Makecode: 5 שלבים (עם תמונות)
וִידֵאוֹ: האנשים הכי שמנים בעולם | טופטן 2024, נוֹבֶמבֶּר
Anonim
Image
Image

GameGo היא קונסולה ניידת למשחקי רטרו תואמת Microsoft Makecode שפותחה על ידי TinkerGen STEM education. הוא מבוסס על שבב STM32F401RET6 ARM Cortex M4 ומיועד לאנשי STEM או רק לאנשים שאוהבים ליהנות ממשחקי וידאו רטרו. תוכל לעקוב אחר הדרכה זו ולנסות את המשחק בסימולטור ארקייד של Makecode ולאחר מכן להריץ אותו על GameGo.

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

אספקה

GameGo

שלב 1: הגיבור

הגיבור
הגיבור

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

הדבר הראשון שצריך לעשות הוא להוסיף רקע ומפת אריחים. בחרתי במפת אריחים ארוכה 32x8 - ברמה הראשונה נצייר אותה ידנית, כמו בצילום מסך 2. לאחר מכן נוסיף את הדמות הניתנת לשחק שלנו עם הגדר את mySprite לבלוק נגן של שחקנים ומניחים אותו בחלק העליון של האריח 0-5. הגדרנו גם את המצלמה לנוע עם אופי שניתן לשחק בו ושולטת בתנועתו השמאלית והימנית - נקבע את מהירות התנועה של V ל- 0, מכיוון שהדמות שלנו לא אמורה להיות צפה בחופשיות על המפה לאורך כיוון y. הוסף שני בלוקים בלחיצת כפתור, אחד ללחצן שמאלי, אחד לימין. כאשר לוחצים על הכפתור השמאלי, אנו בודקים אם הכיוון שלנו היה "שמאלי" לפני לחיצה על הכפתור. אם זה היה, אנחנו פשוט ממשיכים ללכת שמאלה. אם לא, היינו צריכים להפוך את הדימוי הספרייט של הדמות שלנו. היגיון דומה לתנועה נכונה.

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

אני חושב שיצרנו גיבור ראוי לאתגר עכשיו! ובכן, איפה האתגר?

שלב 2: האויבים

האויבים
האויבים

נשתמש במבנה מערך לאחסון שפיריות האויבים. לסוג אויבים ניקח קיצור דרך קטן ונשתמש בעטלפים:) לא התייחסות לנגיף הקורונה, זה רק עטלפים יכולים לעוף, לכן לא נצטרך "לדמות" להם את כוח הכבידה, כפי שאנו עושים עם הדמות שלנו הניתנת לשחק. השתמש בלוק האויב שנוצר כדי להציב עטלפים שזה עתה נוצרו על אריח שרצים אקראי (מסומן בסימן לבן קטן) ולהגדיר את מהירות ה- vx שלהם ל -10 (נסחף לאט ימינה). לאחר מכן בתוך עדכון המשחק כל חסימה של 2000 ms אנו חוזרים על כל פריט ב- אויב_ליסט ומשנים את כיוונם באופן אקראי, תוך הפניית שפריצות העטלפים במידת הצורך (כדי לשקף את השינוי בכיוון התנועה). לבסוף, אנו מוסיפים חפיפה נרחבת של שחקנים עם בלוק אויב מסוג OtherSprite מסוגו, שם אנו בודקים אם השחקן כבר נפגע. אם לא היינו מנכים חיים אחד, הגדר את דגל הפגיעה ל -1 (נפגע) והפעל את הטיימר. לאחר ש -500 אלפיות השנייה מאז שחלפה הפעם האחרונה אנו מחליפים את הדגל חזרה ל -0. אנו עושים זאת על מנת שהשחקן ימנע מאבד יותר מדי חיים יקרים שלו לאחר התנגשות באויב.

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

שלב 3: הנשק

הנשק
הנשק

עבור הנשק, שאבתי את ההשראה ממשחק ישן של נינטנדו על שני אחים של צ'ימון:) בואו נוסיף את ספרייט הארגז לרמה, באופן דומה עם הוספת האויבים. אנו מאתחלים גם את משתנה has_crate ל- -1, מה שמעיד שהדמות שלנו אינה נושאת ארגז. ב- on sprite of kind שחקנים חופפים עם בלוק מזון מסוג OtherSprite of kind, אנו בודקים אם אנחנו כבר מחזיקים ארגז ואם לא, אנו מגדירים את משתנה has_crate לאינדקס של הארגז sprite ברשימה. לאחר מכן בבלוק עדכון המשחק נזיז את הספרייט יחד עם ספרייט של השחקן ואם נלחץ על כפתור A, נשנה את מהירות ה- vx של הארגז ל 1200 או -1200 (תלוי בכיוון התנועה של הדמות). הגדרנו גם את משתנה has_crate בחזרה ל- -1 שוב ושנו את סוג הארייט של הארגז שהושק לאוויר רק עכשיו לקליעה.

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

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

שלב 4: הרפתקאות אינסופיות

הרפתקאות אינסופיות
הרפתקאות אינסופיות
הרפתקאות אינסופיות
הרפתקאות אינסופיות
הרפתקאות אינסופיות
הרפתקאות אינסופיות

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

העלינו ידנית את האריח הראשון (0x6) והשחקן מעליו. לאחר מכן אנו חוזרים על השלב הבא 30 פעמים - השלב הבא הוא סדרה פשוטה של בדיקות אמת -לא נכון, שמחליטות אם אריח העמודה הבאה יהיה 1) אותה רמה כמו הקודמת 2) אחת למעלה או 3) אחת למטה. יש גם סיכוי קטן מאוד שאריח הבא יהיה אריח לבה - אנחנו לא רוצים יותר מדי כאלה! לאחר כל אריח שנוצר אנו ממלאים את החלל שמתחתיו בלבה - רק ליופי. כשלב אחרון אנו מוסיפים את האויבים ואת הארגזים ומניחים אותם על גבי אריחי שרצים אקראיים.

שלב 5: ההרפתקה מתחילה

ההרפתקה מתחילה
ההרפתקה מתחילה

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

זה רק תכנית ובהחלט יש כמה שיפורים שניתן לבצע, למשל סוגים שונים של אויבים, בונוסים, יצירת רמות טובות יותר וכן הלאה. אם אכן יצרת גרסה משופרת של המשחק, שתף אותה בתגובות למטה! למידע נוסף על GameGo וחומרה אחרת ליצרנים ולמחנכי STEM, בקר באתר האינטרנט שלנו, https://tinkergen.com/ והירשם לניוזלטר שלנו.

TinkerGen יצרה קמפיין Kickstarter עבור MARK (Make A Robot Kit), ערכת רובוט ללימוד קידוד, רובוטיקה, AI!

מוּמלָץ: