תכנות לילדים באמצעות Game Maker/פק-מן/צעד 5: נקודות

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


לאכול[עריכה]

מנקודת המבט של המשתמש, הסיפור פשוט:

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

מה זה אומר מבחינת תכנות?

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

נעשה את שלושת הדברים האלה לפי הסדר.

עכשיו תורכם:

Gmaker pacman dots.png
  • ליצור אובייקט לנקודה ולקרוא לו dot (דוט) - נקודה. אפשר להשתמש בדמות dot שנמצאת באותה תיקיה שממנה לקחנו את הדמויות של פקמן.
  • להציב מופעים של האובייקט הזה ברחבי החדר, בין קירות המבוך. עצה: בשביל להוסיף הרבה מופעים בבת אחת, אפשר לגרור את העכבר בזמן שמחזיקים את מקש Shift לחוץ.

מחיקת מופעים[עריכה]

הדבר השני שצריך לעשות זה לתכנת את פקמן לאכול נקודות כשהוא מגיע אליהן. בשביל זה נוסיף לאובייקט פקמן את ארוע ההתנגשות בנקודה. Gmaker collision.png

הפעולה שצריך לעשות בארוע הזה היא מחיקת מופע, שנמצאת בלשונית main1 Gmaker destroy button.png .

Gmaker destroy dialog.png

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

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

Other (אַזֵר) - האחר. הפעולה תתבצע על מי שהתנגשנו בו. זה בדיוק מה שצריך במקרה שלנו: למחוק את הנקודה שבה פקמן פגע.

Object (אוֹבְּגֵ'קְט) - אובייקט. הפעולה תתבצע על כל המופעים של אובייקט מסוים (אפשר לבחור איזה). למשל, אם נבחר כאן באובייקט הנקודה, אז כל הנקודות ימחקו מהמשחק ברגע שפקמן יפגע באחת מהן. (נסו ותראו!)



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




כדאי לדעת:

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

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

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

מה נשאר לנו?

עכשיו תורכם:

להעלות את הניקוד בכל פעם שפקמן אוכל נקודה. בתחילת המשחק, להציג את הניקוד בכותרת החלון. (באמצעות הפעולות Gmaker set score.png Gmaker set caption.png בלשונית הניקוד score.)

סוף המבוך[עריכה]

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

פעולות התנאי נמצאות בלשונית control. הפעולה שנשתמש בה בודקת את מספר המופעים שנמצאים כרגע במשחק: Gmaker instances button.png

Gmaker instances dialog.png

בחלון אפשרויות הפעולה יש שלושה שדות:

  • object: מופעים של איזה אובייקט צריך לספור. במקרה שלנו, אנחנו רוצים לבדוק את מספר המופעים של אובייקט הנקודה.
  • number (נַמְבֵּר) - מספר: איזה מספר מופעים לבדוק. אנחנו רוצים לבדוק מתי לא נשארו יותר נקודות בכלל, כלומר: 0 מופעים.
  • operation (אוֹפֵּרֵיישֵן) - פעולת ההשוואה: האם לבדוק אם מספר המופעים שווה, קטן יותר, או גדול יותר מאשר המספר שכתבנו בשדה number. את השדה הזה נשאיר על Equal to (אִיקְוּאֵל טוּ) - שווה.

חשוב לוודא שפעולת הבדיקה מופיעה אחרי פעולת מחיקת האובייקט ברשימת הפעולות של הארוע, אחרת כשהיא תתבצע עדיין תהיה קיימת נקודה אחת - הנקודה שתימחק בפעולה הבאה!

ואיזו פעולה נעשה אם פעולת הבדיקה תתן תוצאה חיובית? כרגע, בשביל לבדוק שהכל עובד, נשים את פעולת סיום המשחק שנמצאת בלשונית main2: Gmaker end game.png.



Gmaker test save.png עכשיו צריך לאכול את כל הנקודות ולודא שהמשחק נגמר.



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


הדרך של Game Maker לעשות עוד מבוכים (או "רמות" או "מסכים") היא באמצעות חדרים - צעד 6: עוד חדרים