תכנות לילדים באמצעות Game Maker/חייזרים/צעד 5: יצירת חייזרים

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש


אובייקט ניהול[עריכה]

ראינו שאובייקט יכול ליצור אובייקטים אחרים (כשתכנתנו את החללית ליצור קרני לייזר). בשביל ליצור עוד אויבים, נוסיף אובייקט חדש למשחק ונקרא לו alien_manager (אֵילִיֵין מַנַגֵ'ר) - מנהל החייזרים. כל מה שהאובייקט הזה יעשה זה ליצור חייזרים, לכן הוא אפילו לא צריך דמות. למרות זאת, לדעתי כדאי לתת לו דמות כדי שיהיה קל לזהות אותו ברשימת המשאבים, לכן לקחתי בשבילו את הדמות הזו: Gmaker small.png.

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

Gmaker object visible.png

עכשיו אפשר לתכנת את מנהל החייזרים ליצור חייזרים. נתחיל בארוע היצירה שלו Gmaker create.png - נוסיף לארוע הזה את הפעולה ליצירת מופע שנמצאת בלשונית main1: Gmaker create instance.png.

Gmaker create instance dialog.png

בחלון אפשרויות הפעולה נבחר ליצור אובייקט מסוג חייזר. איפה ניצור אותו? בשדה x נכתוב -50 כדי שהחייזר בדיוק ייכנס לחדר משמאל. בשדה y נכתוב random(room_height - 50) כדי להגריל מיקום מקרי בין הקצה העליון של החדר כמעט עד לקצה התחתון.

אם יוצרים אובייקט, צריך גם למחוק אותו. לכן נוסיף לאובייקט החייזר ארוע יציאה מהחדר - Outside room Gmaker other.png. בארוע הזה נשים את פעולת מחיקת המופע Gmaker destroy button.png. אבל לפני שמוחקים את החייזר צריך לוודא שהוא באמת יצא מהחדר מימין, ולא שהוא נמצא משמאל לחדר ועומד להכנס אליו עוד מעט. לכן לפני המחיקה נכניס פעולת בדיקת משתנה Gmaker if var.png ובה נוודא ש-x גדול מ-0.


Gmaker test save.png מיד עם תחילת המשחק אמור להכנס חייזר משמאל.




יצירת חייזרים נוספים[עריכה]

חייזר אחד זה נחמד, אבל אנחנו רוצים שיופיעו עוד ועוד חייזרים! יש הרבה דרכים לעשות את זה, ואנחנו נעשה את זה בעזרת שעון מעורר: נוסיף לארוע היצירה של מנהל החייזרים פעולת כיוון שעון מעורר Gmaker clock button.png. נכוון אותו לצלצל עוד 150 צעדים, למשל. בארוע צלצול השעון Gmaker alarm.png ניצור עוד חייזר באמצעות הפעולה ליצירת מופע Gmaker create instance.png ונוסיף גם עוד פעולת כיוון שעון מעורר Gmaker clock button.png, כדי שכל פעם יופיע עוד חייזר. (אפשר פשוט לשחזר את השעון בכך שנרשום 0 וכך הוא יחזור על עצמו)


Gmaker test save.png כל כמה שניות אמור להופיע חייזר חדש.




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

כדי לקצר את הזמן שעובר בין חייזר לחייזר נצטרך להשתמש במשתנה. לכן נוסיף לארוע היצירה של מנהל החייזרים פעולת קביעת ערך של משתנה Gmaker set var.png. נקרא למשתנה alien_interval (אֵילִיֵין אִינְטֵרְוַול) - מרווח חייזרים. הערך שניתן לו יהיה 150. עכשיו נשנה את פעולת כיוון השעון לחכות alien_interval צעדים - גם בארוע היצירה וגם בארוע צלצול השעון.

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


Gmaker test save.png עכשיו המרווחים בין הופעת חייזר אחד לשני אמורים להתקצר. אבל מה קורה אם מחכים עוד ועוד? כמה קצר יכול להיות המרווח?




המרווח בין החייזרים מתקצר ומתקצר עד שהוא מגיע ל-0. אבל אז, פעולת כיוון השעון ל-0 צעדים גורמת לכיבוי השעון המעורר. לכן לפני שמקטינים את המרווח צריך להוסיף פעולת בדיקת ערך של משתנה Gmaker if var.png . בפעולה הזאת צריך לוודא ש-alien_interval גדול מ-5. ככה המרווח בין החייזרים יקטן עוד ועוד, עד שהוא יגיע לחמישה צעדים, ואז הוא ישאר חמישה צעדים.


Gmaker test save.png אחרי שמחכים הרבה זמן החייזרים יהיו מאוד צפופים, אל הם עדיין ימשיכו להופיע.



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


יש חללית, יש חייזרים, עכשיו אפשר לתת להם להלחם זה בזה - צעד 6: פיצוצים