איך ליצור משחק מחשב פשוט – חלק ב’

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

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

אוביקט המטוס

נתחיל עם אוביקט המטוס ע”י יצירת ספרייט ואוביקט מתאימים.

לאוביקט המטוס נשייך אירוע אחד ופעולה אחת – כאשר המטוס מחוץ לחדר (אירוע outside room) נהרוס את המופע של האוביקט (destroy the instance).

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

אוביקט מנהל

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

לאוביקט זה נשייך שני אירועים: אירוע יצירה ואירוע alarm.

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

1. נבחר את האוביקט המתאים, במקרה זה airplaneObj

2. נגדיר את נקודת ה-X בה יופיע האוביקט. כדי להגדיר נקודה אקראית, נשתמש בפונקציה random ובסגריים נגדיר את התחום ממנו המחשב יחשב נקודה אקראית.
כדי שהמטוס לא יופיע מחוץ למסך נגדיר את רוחב המסך (כלומר רוחב החדר) פחות רוחב האוביקט של המטוס.
לדוגמא, רוחב החדר במקרה זה הוא 640 ורוחב המטוס הוא 128, ולכן הנקודה המקסימלית שהאוביקט יכול להופיע בו על ציר ה-X מבלי שהמטוס יחתך היא 512. אני הגדרתי 510. את הרוחב נגדיר בתוך סגריים אחרי שם הפונקציה, כך:

create airplane

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

ערך המהירות צריך להיות בערך כמו המהירות של תנועת הציפור והכיוון כלפי מטה. כדי להגדיר את הכיוון למטה הגדירו 270. למה? כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

 הוספת אירוע עבור יצירת מופעים נוספים של אוביקט המטוס

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

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

אירוע שעון מעורר

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

כך יראה חלון האפשרויות של האוביקט המנהל:

manager object

הוספת פעולות ואירועים לציפור

הוספת חיים וניקוד לאוביקט הציפור

לאוביקט הציפור נוסיף אירוע יצירה ונשייך לו את הפעולות הבאות:

הגדרת חיים – אני הגדרתי 3, תוכלו להגדיר כמות אחרת אם תרצו. – set lives

הגדרת ניקוד – מתחיל ב- 0 – set the score

הצגת הניקוד והחיים בחלון המשחק – set the score caption info

אירוע No more lives

לאוביקט הציפור נוסיף אירוע נוסף – no more lives, זהו אירוע שמור של game maker עבור מצב בו אין יותר חיים. נשייך לו פעולה של מעבר לחדר של סיום המשחק (לא תוכלו ליצור מעבר לחדר שלא קיים, לכן צרו תחילה חדר שנקרא end game). משמעות אירוע זה היא שכאשר נגמרים החיים שהגדרתם קודם, המשחק יעבור למסך הסיום.

הוספת אירוע התנגשות

לאוביקט הציפור נוסיף אירוע התנגשות עם המטוס ונשייך לו פעולה של הריסת מופע המטוס (אחרת תמשיך להיות התנגשות עם הציפור).

bird object

 הרצת המשחק

הוסיפו את האוביקט המנהל לחדר והריצו את המשחק.

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

כתיבת תגובה