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



לירות בחייזרים

עריכה

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

  1. פעולת מחיקה   בשביל למחוק את החייזר.
  2. פעולת מחיקה נוספת   בשביל למחוק את הלייזר - בפעולה הזאת צריך ש-Applies to יהיה Other (הלייזר).

  עכשיו אפשר לירות בחייזרים ולהעלים אותם.




נחמד להרוג את החייזרים, אבל יהיה נחמד יותר לפוצץ אותם!

פיצוץ

עריכה

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

אז ניצור אובייקט חדש לפיצוץ. נקרא לו alien_explosion (אֵילִיֵין אֵקְסְפְּלוֹזֵ'ן) - פיצוץ חייזר. הדמות שלו צריכה להיות הנפשה של פיצוץ. מצאתי הנפשה מתאימה בספריית הדמויות החופשית SpriteLib:

 

(כדאי לשמור אותה בתיקיית הדמויות של Game Maker.)

אבל אם נשתמש בדמות הזו, לא נראה הנפשה אלא תמונה של כל שלבי הפיצוץ זה ליד זה! מה עושים?

רצועות

עריכה

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

בשביל לקרוא רצועה, צריך לפתוח את חלון תכונות הדמות ולהקליק על הכפתור לעריכת הדמות - Edit Sprite. ייפתח לנו חלון עריכת דמות. בחלון הזה נלך לתפריט השמאלי - תפריט File. שם נבחר Create from Strip (קְרִיאֵייט פְרוֹם סְטְרִיפ) - הכן מתוך רצועה. אז נתבקש לבחור את הקובץ שבו הרצועה - צריך לבחור הקובץ שבו שמרת את התמונה שמופיעה כאן למעלה.

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

השדות הכי חשובים הם ארבעת השדות הראשונים:

  1. number of images (נַמְבֵּר אוֹף אִימַגֵ'ז) - מספר התמונות. ברצועה שלנו יש שבע תמונות, אז בשדה הזה נכתוב 7.
  2. images per row (אִימַגֵ'ז פֵּר רוֹוּ) - תמונות בכל שורה. ברצועה שלנו כל שבע התמונות הן בשורה אחת, לכן גם כאן נכתוב 7.
  3. image width (אִימַג' וּוִידְס') - רוחב תמונה. ברצועה הזאת הרוחב של כל אחת מהתמונות הוא 54 פיקסלים, לכן נכתוב כאן 54. (אם לא יודעים את הרוחב אפשר לנסות מספרים שונים ולראות מה מתאים לפי המסגרות שמופיעות בצד ימין. נסו ותראו!)
  4. image height (אִימַג' הַייט) - גובה תמונה. גם הגובה של התמונות שלנו הוא 54 פיקסלים, לכן גם כאן נכתוב 54.

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

כשגמרת לבדוק, צריך להקליק על הכפתור OK. אז נוכל לראות את התמונות של שלבי הפיצוץ נפרדות זו מזו. כדי לראות את הדמות מונפשת, אפשר לסמן בצד שמאל את תיבת הסימון Show Preview (שוֹוּ פְּרִיוְויוֹ) - תצוגה מוקדמת.

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

הצגת הפיצוץ

עריכה

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


  מה קורה כשיורים בחייזר?




 

אם לא אומרים להנפשה לעצור, היא פשוט תחזור שוב ושוב. לכן צריך לעצור את ההנפשה אחרי הפעם הראשונה שהיא מוצגת, ולמחוק את הפיצוץ. איך יודעים מתי ההנפשה סיימה להציג את כל התמונות? יש ארוע שקורה אז. לכן נלך לחלון תכונות האובייקט של הפיצוץ, ושם נוסיף את הארוע הזה: בסוג ארוע Other   נבחר מהתפריט שצץ את הארוע Animation end (אַנִימֵיישֵן אֵנְד) - סוף ההנפשה. בארוע הזה צריך לעשות פעולה אחת: למחוק את הפיצוץ  .


  עכשיו אפשר לפוצץ יפה את החייזרים!




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

סכנה: חייזרים!

עריכה

עד עכשיו החללית היתה בטוחה - החייזרים לא עשו לה כלום. בואו נשנה את זה.

 

עכשיו תורכם:

כשהחללית מתנגשת בחייזר, לתכנת אותה להתפוצץ בפיצוץ גדול:

 

(ברצועה הזו יש 12 תמונות בגובה 64 פיקסלים וברוחב 64 פיקסלים.)

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

עכשיו המשחק קצת יותר מעניין. בואו נעשה אותו אפילו יותר מאתגר!

 

עכשיו תורכם:

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

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

כשקליע פוגע בחללית, היא צריכה להתפוצץ (והקליע עצמו צריך להמחק).

לא לשכוח למחוק את הקליע כשהוא יוצא מהחדר.


  מה קורה אחרי שהחללית מתפוצצת?



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


  עכשיו לא צריכה להיות שגיאה אחרי שהחללית מתפוצצת.




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


 

עכשיו תורכם:

להוסיף צלילים ליריות ולפיצוצים.

החללית יודעת לפוצץ ולהתפוצץ. עכשיו אפשר לדאוג לניקוד - צעד 7: ניקוד וחיים