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

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



למעלה ולמטה[עריכה]

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

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



Gmaker test save.png המעלית עולה ויורדת כמו מעלית. מה קורה כשמריו עולה עליה?




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



Gmaker test save.png מריו נשאר על המעלית גם בפניה התחתונה, אבל מה לגבי הפניה העליונה?




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

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

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

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



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




מסוע או מעלית[עריכה]

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

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

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

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

Gmaker room instance code.png

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

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

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



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




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