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



למעלה ולמטה

עריכה

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

  1.   ללכת לארוע היצירה של המסוע\מעלית.
  2.   למחוק את הפעולה לקביעת המהירות האופקית.
  3.   במקומה לקבוע את המהירות האנכית (מהירות 1 או 2 תספיק).
  4. להזיז בחדר את מופעי הפניה ככה שיהיו מעל ומתחת המעלית במקום מהצדדים.



  המעלית עולה ויורדת כמו מעלית. מה קורה כשמריו עולה עליה?




מריו עולה ויורד טוב, אבל יש בעיה כשהמעלית משנה כיוון: מריו "מחליק" וזה גורם לו לרחף קצת (למעלה) או להתקע במעלית (למטה). בשביל לתקן את ההחלקה האנכית, נצטרך לעשות כמו שעשינו בשביל לתקן את ההחלקה האופקית: להוסיף ל-y של מריו את הערך 2 * vspeed אחרי הפניה. (אין צורך למחוק את פעולת ההצבה ל-x, כי hspeed היא עכשיו 0 ככה ש-x לא ישתנה ממילא.)



  מריו נשאר על המעלית גם בפניה התחתונה, אבל מה לגבי הפניה העליונה?




מריו עדיין מחליק למעלה בפניה העליונה. למה זה קורה?

כשיש התנגשות בין המעלית לפניה, Game Maker מחזיר את המעלית צעד אחורה ורק אז מבצע את הפעולות של ארוע ההתנגשות. לכן כשהמעלית מגיעה לפניה למעלה, מריו נמצא צעד אחד מעליה ולא בדיוק עליה (במיקום יחסי y=-1). הוא נמצא vspeed פיקסלים יותר למעלה מזה.

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

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



  מריו נשאר על המעלית גם בפניה העליונה.




מסוע או מעלית

עריכה

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

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

אבל Game Maker נותן לנו עוד דרך להשיג את זה, בלי ליצור אובייקט נוסף:

  1. ללכת לחלון תכונות החדר.
  2. להחזיק את מקש Control לחוץ, ובאותו הזמן להקליק עם הכפתור הימני על המסוע/מעלית. זה מקפיץ תפריט של דברים שאפשר לעשות למופע שמקליקים עליו.
  3. לבחור את הפריט האחרון בתפריט: Creation Code.

 

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

לכן צריך לכתוב שם vspeed = 2; או hspeed = 2; - תלוי אם רוצים שהמסוע ינוע למטה או ימינה. אפשר לשים בחדר כמה מסועים, ולכתוב לכל אחד מהם קוד יצירה אחר, לפי הכיוון שבו הוא צריך להתחיל לנסוע.

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



  כל מופע של מסוע\מעלית נע בכיוון שונה, בהתאם לקוד היצירה שלו.




- מעלית
תרגילים
-