x
בניית אתרים בחינם
הפוך לדף הבית
הוסף למועדפים
שלח לחבר
 
                     הכל על הכל©       

        

 
    דף הבית
    סרגל כלים לאתר
    מה זה איקרים?
    פורום איקרים
    איך נרשמים ?
    מדריך למתחיל
    פרטי לצבא
    פלאים באיקרים
    מ חקרים ומה הם עושים
    איפה כדאי לפתוח ערים ?
    איך לעלות שמחה ?
    איך נראה הערים מבחוץ בכל שלב ?
    איך נראה הערים מבפנים בכל שלב
    בריתות טובות
    Game Maker
    פורום בניית משחקים
    איך ליצור משחק פונג
    איך ליצור משחק פקמן
    המשחקים שלנו
    איך ליצור משחק חייזרים
    איך ליצור משחק טטריס
    תחרות משחקים !!!
    צור קשר
    דף סקרים
    איך עושים סרגל כלים
    סרטים להורדה

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

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

 

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

 

 לפני שמתחילים: הורדה והתקנה

קודם כל צריך להוריד ולהתקין את התוכנה שנעבוד בה: Game Maker (גֵיים מֵייקֵר), שבעברית זה אומר "מחולל משחקים" - כלומר: כלי שעוזר לנו ליצור משחקים. למי שרגיל להוריד תוכנות ולהתקין אותן זו לא תהיה בעיה - פשוט צריך ללכת אל האתר של Game Maker, להוריד את הגירסה האחרונה שיצאה ולהפעיל את קובץ ההתקנה שהורדת. אפשר להתקין על כל מחשב עם חלונות ועם DirectX (שבטח מותקן לך כבר ממילא).

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

בכניסה הראשונה ל-Game Maker, הוא שואל אם להתאים את עצמו למשתמשים מתקדמים. אנחנו רק מתחילים כרגע, אז עדיף להגיד לו לא: ללחוץ על הכפתור שכתוב עליו No (נוֹוּ).

זהו, עכשיו אפשר להתחיל ליצור משחק!
 
 
 
 
[

תכנות לילדים באמצעות Game Maker/פונג/צעד 1: המסך

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


 

 הכרות עם Game Maker

כשמפעילים את Game Maker, זה מה שאמורים לראות:

תמונה:gmaker_blank_slate.png

בצד ימין יש שטח גדול וריק, שבו נשתמש בשביל לעבוד על המשחק.
בצד שמאל יש רשימה של דברים שנשתמש בהם במשחק שלנו, מה שנקרא באנגלית resources (רִיסוֹרְסֶז) ובעברית "משאבים". כרגע עוד לא יצרנו שום דבר להשתמש בו, אז אין שם כלום מלבד כותרות לסוגים של משאבים.
למעלה יש סרגל כלים עם כל מיני פעולות שאפשר לעשות. הפעולה הכי חשובה היא שמירת המשחק, כי אם לא נזכור לשמור את המשחק כל העבודה שנעשתה עלולה ללכת לאיבוד. אז נתחיל בזה:

 שמירת משחק

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

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

 דבר ראשון: ליצור משהו שעובד

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

אז איך אפשר להציג משהו ב-Game Maker? בשביל זה צריך ליצור מקום שבו דברים יכולים להיות מוצגים. למקום כזה קוראים room (רוּם) - חדר. חדר יכול להכיל את כל המשחק שלך, או להיות חדר ממש במשחק שבו עוברים מחדר אחד לשני, או להכיל רמה במשחק שבו מתקדמים ברמות.

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

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

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


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

 

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


 אובייקטים

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

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

בשביל ליצור אובייקט צריך להקליק על הכפתור בצורת כדור כחול.תמונה:gmaker_add_object.png

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

השם ש-Game Maker נתן לאובייקט החדש הוא object0. מבחינתו הרי לא משנה איך נקרא לאובייקטים שלנו - הוא לא מבין אנגלית וגם לא עברית. אבל לנו עדיף לקרוא לאובייקטים שלנו בשמות שבאמת מתאימים להם, כדי שיהיה קל לנו להסתדר גם כשיהיו לנו הרבה אובייקטים. וזה עוד יותר חשוב כשמתחילים לכתוב פקודות בשפת תכנות, אבל לזה נגיע בהמשך. בשביל לשנות את השם של האובייקט צריך לבחור את האובייקט בהקלקה, ואז להקליק על השם ולכתוב במקומו שם חדש. כדאי לקרוא לו פשוט "מחבט" באנגלית: bat (בַּט). (לא לשכוח ללחוץ אנטר אחרי שהקלדת את השם החדש!)



 

 

 דמות

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

תמונה:gmaker_sprite_area.png

התכונה הראשונה שנגדיר תהיה איך האובייקט נראה או "הדמות" שלו, ובאנגלית: sprite (סְפְּרַייט). את הדמות של האובייקט קובעים בשדה שמצד שמאל. מאחר שעוד אין לנו דמויות בין המשאבים במשחק, ניצור דמות חדשה ע"י הקלקה על New (נְיוּ) - חדש.

עכשיו נפתח עוד חלון שמאפשר לנו להגדיר דמות. הפעם לא נצייר בעצמנו דמות, אלא נפתח דמות שמישהו אחר כבר צייר. בשביל זה צריך להקליק על הכפתור Load Sprite (לוֹוּד סְפְּרַייט - טעינת דמוּת). ואז Game Maker מביא אותנו לתיקיה שבה יש כמה תיקיות עם דמויות מוכנות. יש דמויות שיתאימו לנו בתיקיה breakout, אז נכנס לשם. אפשר פשוט לעבור על התמונות שם ולראות מה נראה נחמד, אבל לדעתי כדאי לבחור ב-bat1 או bat2. אחרי שבחרת תמונה (ולחצת אנטר או Open), הדמות תוצג בחלון הגדרת הדמות. נאשר בלחיצה על OK (הכפתור עם סימן וִי ירוק) - והנה יש לנו דמות למחבט שלנו!

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

הצבת האובייקט על המסך

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

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

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

להקליק על כפתור ההפעלה שבצורת משולש ירוק.תמונה:gmaker_run.png

אם הכל הצליח, אמורים לראות חלון עם המחבט. הצלחת?

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


 
 
אירועים

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

  1. לדעת מתי המשתמש לוחץ על חץ.
  2. כשזה קורה, להזיז את המחבט.

Game Maker יודע לשים לב מה עושה המשתמש בכל רגע, והוא שולח על כך הודעות לכל האובייקטים: "שימו לב! המשתמש לחץ על חץ!" או "תראו, המשתמש הקליק בעכבר!". (הוא שם לב גם לדברים שהאובייקטים במשחק עושים ולא המשתמש - נכיר אותם בהמשך.) כל דבר כזה שקורה במשחק נקרא event (אֵוֵונְט) - ארוע. יש המון סוגים של ארועים, ורוב האובייקטים מתעלמים מרוב הארועים.

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

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

תמונה:gmaker_event_area.png

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

תמונה:gmaker_key.png ארוע מקש (Keyboard) מסמן שהמשתמש לוחץ על מקש. האירוע הזה קורה מרגע שהמשתמש התחיל ללחוץ על המקש, וחוזר שוב ושוב כל עוד המשתמש ממשיך ללחוץ.

תמונה:gmaker_key_down.png ארוע לחיצה (Key Press) מסמן שהמשתמש התחיל ללחוץ על מקש. האירוע הזה קורה רק כשהמשתמש מתחיל ללחוץ על המקש, אבל לא קורה שוב עד שהמשתמש לא משחרר את המקש ולוחץ שוב.

תמונה:gmaker_key_up.png ארוע שחרור מקש (Key Release) קורה כשהמשתמש משחרר את המקש שהוא לחץ עליו קודם.

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

עכשיו האירוע של לחיצה על חץ שמאלה מופיע ברשימת האירועים של אובייקט המחבט.

 פעולות

מימין לרשימת האירועים יש רשימה נוספת: Actions (אַקְשֵנְז) - פעולות. זו רשימת הפעולות שצריך לעשות כשהאירוע קורה. מימין לרשימת הפעולות יש כל מיני כפתורים - כל כפתור כזה מייצג פעולה, ואפשר לגרור אותו עם העכבר לרשימת הפעולות.

 


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

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

לוחצים על הכפתור עם חץ שמאלה כדי שהמחבט יזוז שמאלה, וכותבים 5 בשדה Speed (סְפִּיד) - מהירות.

עכשיו צריך ללחוץ OK, ואז אפשר לראות את פעולת התנועה ברשימת הפעולות.

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

ניסית? מה קרה? מה זה אומר?

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

 ארועים נוספים

בשביל שהמחבט לא ימשיך לנוע לעד, צריך להגיד לו לעצור: כשקורה אירוע של שחרור מקש החץ שמאלה - לעמוד במקום.


עכשיו תורך:

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



בשביל שהמחבט יעצור כשמפסיקים ללחוץ על החץ, צריך קודם כל להוסיף לרשימת האירועים שלו אירוע חדש באמצעות הקלקה על הכפתור Add event שמתחת רשימת האירועים, בדיוק כמו שעשינו קודם כשהוספנו את האירוע של לחיצה על החץ. אבל הפעם צריך לבחור באירוע של שחרור מקש. תמונה:gmaker_key_up.png

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

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

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


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



עכשיו תורך:

עכשיו אפשר לתכנת את המחבט לזוז גם לצד ימין (וכמובן לעצור את התנועה ימינה כשצריך). עושים את זה בדיוק כמו שתכנתנו את התנועה שמאלה, רק הפעם בוחרים במקש חץ ימינה: Right (רַייט) - ימין.




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



 עריכת פעולות

קבענו שמהירות המחבט תהיה 5. זו מהירות נוחה לבדיקת המשחק, אבל קצת איטית כשרוצים ממש לשחק. בשביל לשנות את המהירות, צריך להגיע שוב לחלון שבו יש את האפשרויות של הפעולה. בשביל זה צריך קודם כל לבחור את האירוע המתאים (למשל, האירוע של לחיצה על חץ שמאלה) ואז לעשות הקלקה-כפולה על הפעולה שרוצים לשנות. בחלון שנפתח, משנים את המהירות ל-10 ומקליקים OK. (לא לשכוח לשנות גם את המהירות באירוע של לחיצה על החץ השני!)


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

 
אובייקט יציב

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

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

חלון תכונות האובייקט נפתח לנו בצד ימין. דבר ראשון, ניתן לאובייקט שם שיתאר אותו. בפעם הקודמת שינינו את שם האובייקט ברשימת המשאבים, אבל הפעם נשנה אותו בחלון תכונות האובייקט: השדה שבפינה השמאלית למעלה מציין את שם האובייקט - Name (נֵיים). כרגע כתוב שם object1. את זה צריך להחליף בשם יותר משמעותי: border (בּוֹרְדֵר) - גבול. האובייקט הזה יסמן את גבול אזור המשחק וימנע מהמחבט לצאת ממנו.

מתחת לשם האובייקט יש שתי תיבות סימון, שליד הימנית מביניהן כתובה המילה Solid (סוֹלִיד) - יציב, נייח. בדרך כלל כשאומרים solid מתכוונים למשהו מוצק, אבל ב-Game Maker הכוונה היא לאובייקט יציב, שלא זז. אובייקט הגבול שלנו בהחלט צריך להיות יציב, ולכן צריך לסמן את תיבת הסימון הזאת. תמונה:gmaker_solid.png


{{{גודל}}}

כדאי לדעת:

למה חשוב להגדיר שאובייקט הוא יציב? זה משנה כשאובייקטים אחרים מתנגשים באובייקט הזה - אם הוא יציב אז הם לא יכולים להזיז אותו.



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

 ציור דמות

בשביל לצייר את הדמות צריך להקליק על הכפתור האמצעי בחלון תכונות הדמות: Edit Sprite (אדיט סְפְּרַייט) - ערוך דמות.

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


{{{גודל}}}

כדאי לדעת:

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


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


{{{גודל}}}

כדאי לדעת:

פיקסל הוא יחידת התצוגה הקטנה ביותר על מסך המחשב: ריבוע קטן של צבע. התמונות והצורות שאנחנו רואים על המסך בנויות מרשת גדולה של פיקסלים בצבעים שונים. המילה פיקסל באה מצירוף המלים Picture Element (פִּיקְצֵ'ר אֵלֵמֵנְט) - יחידת תמונה.



בשביל לשנות את גודל התמונה צריך ללכת לתפריט Transform (טְרַנְסְפוֹרם) - לשנות. שם צריך לבחור בפקודה השלישית מלמטה: Resize Canvas (רִיסַייז קַנְוַוס) - שינוי גודל הבד (כמו בד שציירים מציירים עליו). בחלון האפשרויות שיפתח צריך לכתוב 16 במקום 32 ולאשר בלחיצה על אנטר.

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

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

 שקיפות

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

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

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

עכשיו אפשר להקליק על OK.

 התנגשות

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

אז בואו נוסיף למחבט שלנו טיפול בארוע התנגשות עם הגבול:

  1. לעשות הקלקה-כפולה על אובייקט המחבט ברשימת המשאבים שמשמאל, ואז נקבל מימין את חלון תכונות האובייקט של המחבט.
  2. להקליק על Add event.
  3. מבין סוגי הארועים, לבחור בארוע ההתנגשות Collision: תמונה:gmaker_collision.png.
  4. עכשיו צץ תפריט שמאפשר לבחור על איזו התנגשות מדובר. לבחור בהתנגשות עם אובייקט גבול, כמובן.

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

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

תמונה:gmaker_room_border_object.png

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

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

 מופע

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

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

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


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

המחבט מוכן, ועכשיו דרוש כדור שנוכל לחבוט בו. את ההתחלה כבר בטח ברור לך איך לעשות:

  1. ליצור אובייקט חדש תמונה:gmaker_add_object.png
  2. לתת לו שם משמעותי, למשל ball (בּוֹל) - כדור.
  3. ליצור לו דמות מתאימה - אפשר לצייר לבד ואפשר לטעון דמות מוכנה (יש כדורים מתאימים בין הדמויות בתיקיה breakout שבה מצאנו את דמות המחבט). דמות הכדור עגולה ולא מלבנית, אז צריך להשאיר את הסימון בתיבת הסימון Transparent שמסמנת שיש בתמונה חלקים שקופים.
  4. להוסיף את אובייקט הכדור לחדר, איפשהו באמצע.
  5. להפעיל את המשחק כדי לבדוק שהכדור מופיע כמצופה.
  6. לשמור את המשחק.

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

 ארוע יצירה

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

  1. להקליק על הכפתור להוספת ארוע שבחלון תכונות האובייקט של הכדור.
  2. לבחור את ארוע היצירה Create. תמונה:gmaker_create.png
  3. להוסיף פעולת תנועה תמונה:gmaker_red_move_button.png. כדאי שמהירות התנועה תהיה קטנה ממהירות התנועה של המחבט, כדי שהמשתמש יצליח לחבוט בכדור (למשל, מהירות 3 או 5). ובאיזה כיוון תהיה התנועה? אפשר ללחוץ על יותר מחץ אחד, ואז הכדור יבחר אחד מהכיוונים האלה באופן אקראי. ככה בכל פעם שנשחק הכדור יזוז בכיוון אחר ובלתי צפוי. כדאי לבחור את ארבעת החצים האלכסוניים - תנועה ישר היא משעממת יחסית.



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


אם הכדור באמת זז, אז הוא בורח החוצה מהמסך! צריך לעצור אותו, ולהחזיר אותו חזרה.

 פעולת ניתור

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

אז עכשיו צריך לעשות שני דברים:

  1. להקיף את החדר במופעים של אובייקט הגבול (מלבד בצד התחתון) כמו בתמונה למטה.
  2. לטפל בארוע ההתנגשות של הכדור בגבול.

תמונה:gmaker_room_with_border.png

הפעם אנחנו לא רוצים שהכדור סתם יעצור כשהוא מתנגש בגבול, אלא שינתר ממנו חזרה וימשיך לנוע. למרבה המזל, אנחנו לא צריכים להגיד מראש באיזה כיוון ומהירות לנתר חזרה, כי ל-Game Maker יש פעולה מיוחדת לניתור מאובייקטים שמתנגשים בהם: Bounce (בּאוּנְס) - ניתור. תמונה:gmaker_bounce_button.png

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


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


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

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

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


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


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

 פעולת תנועה מדוייקת

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

אז בואו נחליף את התנועה ההתחלתית של הכדור בתנועה מדוייקת:

  1. לבחור את ארוע היצירה של הכדור.
  2. למחוק מרשימת הפעולות שלו את פעולת התנועה עם החצים האדומים (פשוט לבחור אותה וללחוץ על מקש Delete).
  3. במקומה, לגרור לרשימת הפעולות את פעולת התנועה המדוייקת עם החצים הכחולים.
  4. בחלון אפשרויות הפעולה, לכתוב את המהירות כרגיל בשדה המהירות speed.
  5. מעל שדה המהירות, יש שדה direction (דַיירֵקְשֵן) - כיוון. שם אפשר להגדיר את הכיוון באמצעות מספר שמציין את הזווית במעלות ביחס לתנועה לצד ימין. כלומר, תנועה ימינה תהיה כיוון 0, תנועה למעלה תהיה כיוון 90, בשביל תנועה שמאלה צריך לכתוב בשדה הכיוון 180, ובשביל תנועה למטה - 270 (או -90). מספרים אחרים יגדירו כיווני ביניים בין הכיוונים האלה. כדאי לנסות לכתוב כאן מספרים שונים ולראות מה יוצא. (למשל: 270, או 300, או 200, או מספרים אחרים.)

תמונה:gmaker_test_save.png הכדור ייפול בזווית שכתבת בשדה direction.



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

תמונה:gmaker_blue_move_dialog.png

random

מה זה? למה סוגריים? אפשר לכתוב מלים במקום מספרים?
אפשר לכתוב מלים מסויימות ש-Game Maker מבין, במקום מספרים. אם נכתוב מלים שהוא לא מכיר אז תהיה שגיאה כשננסה להפעיל את המשחק (נסו ותראו!).

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

איך הופכים מלה למספר?
יש מלים ש-Game Maker יודע להפוך מיד למספר. הן נקראות "משתנים" ונדבר עליהם יותר בהמשך. יש מלים אחרות, כמו random, שעוזרות להפוך מספר אחד (או יותר) למספר אחר. מלים כאלה נקראת פוּנקציות. הפונקציה random לוקחת את המספר בסוגריים (שנקרא פַּרַמֵטֵר) ובמקומו מחזירה מספר אקראי שקטן ממנו. ככה ש-random(360) תחזיר מספר אקראי כלשהו בין 0 לבין 360. יש עוד הרבה פונקציות ב-Game Maker, ובתכנות מתקדם יותר משתמשים בהן המון.


תמונה:gmaker_test_save.png עכשיו צריך שוב לבדוק שהכל עובד ולשמור את המשחק.



 ביטויים

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

בשביל שהכדור יתקדם באיזשהו כיוון יורד, הכיוון שלו צריך להיות גדול יותר מ-180 (שזה שמאלה) אבל קטן יותר מ-360 (שזה שוב חזרה ימינה). אנחנו גם לא רוצים שזה יהיה יותר מדי אופקי ימינה או שמאלה. הכי טוב יהיה מין נפילה אלכסונית למטה, בזווית בין 225 לבין 315.

הפונקציה random נותנת לנו מספר בין 0 לבין הפרמטר (המספר ששמים אחריה בסוגריים). אבל אנחנו צריכים מספר יותר גדול - מספר בין 225 ל-315. מה עושים? אם נכתוב 20+random(10) אז נקבל 20 ועוד המספר שהפונקציה random תחזיר, שהוא יהיה בין 0 ל-10. כלומר: נקבל מספר בין 20 לבין 30. בואו נשנה קצת את המספרים ככה שבמקום מספר בין 10 ל-20 נקבל מספר בין 225 ל-315. קודם כל, ברור שלמספר האקראי שתחזיר לנו הפונקציה random צריך להוסיף 225, כי הפונקציה יכולה להחזיר לפעמים 0. אז אנחנו צריכים 225+random(?). איזה מספר צריך לבוא במקום הסימן שאלה? מספר מספיק גדול כדי שנוכל להגיע עד 315. מאיפה אנחנו צריכים להגיע ל-315? מ-225. זאת אומרת, אנחנו מחפשים את המספר שמוסיפים ל-225 בשביל להגיע ל-315. המספר הזה הוא ההפרש ביניהם: 90 = 225 - 315 .

לכן נשנה את הכיוון של הפעולה ל-225+random(90).

התרגיל שכתבנו בשדה הכיוון נקרא ביטוי. Game Maker יודע לחשב ביטויים כאלה ולהשתמש בתוצאה. בכל מקום שהוא רוצה שנכתוב מספר, הוא יסכים גם שנכתוב ביטוי והוא כבר יחשב את התוצאה של הביטוי וישתמש בה. ככה אפשר לכתוב למשל בשדה המהירות 10/3 או כל ביטוי אחר, במקום מספר.


תמונה:gmaker_test_save.png עכשיו צריך לראות שזה באמת עובד
 
 
 
 
פעולות על פעולות

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

  1. ללחוץ על הוספת ארוע.
  2. לבחור בסוג ארוע Other (אַזֵר) - אחר תמונה:gmaker_other.png.
  3. בתפריט שצץ לבחור Outside Room (אַוּוטְסַייד רוּם) - מחוץ לחדר.

תמונה:gmaker_outside_room.png

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


תמונה:gmaker_test_save.png וכרגיל, צריך לבדוק.


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

  1. תמונה:gmaker_create.png להקליק על ארוע היצירה ברשימת הארועים של אובייקט הכדור.
  2. תמונה:gmaker_blue_move_button.png ברשימת הפעולות של הארוע מופיעה פעולת התנועה המדוייקת (חצים כחולים). לבחור אותה באמצעות הקלקה, ולהעתיק אותה בהקשה על Ctrl+C.
  3. תמונה:gmaker_other.png ברשימת הארועים, להקליק על ארוע היציאה מהחדר כדי לחזור אליו.
  4. להקליק על רשימת הפעולות, ואז להדביק כאן את הפעולה שהעתקנו באמצעות הקשה על Ctrl+V.

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


 צלילים

בואו נוסיף צליל נפילה כשהכדור נופל למטה. בשביל זה קודם צריך להוסיף למשחק משאב מתאים, משאב מסוג Sound (סַאוּנְד) - צליל:

  1. להקליק על הכפתור להוספת צליל בסרגל הכלים. תמונה:gmaker_sound_button.png
  2. לתת לצליל שם משמעותי, למשל fall_sound (פוֹל סַאוּנְד) - צליל נפילה.
  3. להקליק על הכפתור Load Sound (לוֹוּד סַאוּנְד) - טען צליל.
  4. לבחור קובץ צליל כלשהו. אפשר לבחור צלילים מהתיקיה עם הדוגמאות שמגיעות עם Game Maker, ואפשר גם צלילים אחרים שיש לכם במחשב.
  5. לשמוע את הצליל שבחרתם באמצעות הקלקה על המשולש הירוק. אם הוא לא מתאים - אפשר לטעון צליל אחר עד שמוצאים משהו מספיק טוב.
  6. להקליק OK לאישור.


{{{גודל}}}

כדאי לדעת:

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



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

מהלשונית הזו אפשר לקחת את הכפתור לפעולה של השמעת צליל תמונה:gmaker_sound_button.png ולגרור אותו לרשימת הפעולות. בחלון אפשרויות הפעולה, צריך לשנות את השדה sound (צליל) לצליל שלנו, וללחוץ אישור.

תמונה:gmaker_sound_dialog.png


תמונה:gmaker_test_save.png שומעים?



עכשיו תורך:

להוסיף צלילים גם להתנגשות של הכדור במחבט ובגבול.



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

 השהיה

בשביל לגרום למשחק לעצור לכמה זמן, משתמשים בפעולת השהיה: תמונה:gmaker_sleep.png. את פעולת ההשהיה אפשר למצוא בלשונית השלישית "main2".

השדה הראשון בחלון אפשרויות הפעולה הוא milliseconds (מִילִיסֵקֵנְדְס) - אלפיות שניה. בואו ננסה לראות אם תתאים לנו השהיה של 1000 אלפיות שניה (כלומר: שניה אחת בדיוק). אז אפשר להשאיר את הערך בשדה על 1000, ולהקליק על אישור.


תמונה:gmaker_test_save.png איך זה עובד?


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

 סדר הפעולות

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

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


תמונה:gmaker_test_save.png אפשר לנסות לשנות את אורך ההשהיה, או לנסות סדר אחר לפעולות, ולראות איך זה משפיע על המשחק.


עכשיו תורך:

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


 חיים

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

בשביל לאבד חיים, צריך קודם כל שיהיו חיים שאפשר לאבד אותם... נקבע שבתחילת המשחק המשתמש מקבל 3 חיים. בשביל זה נרצה לטפל בארוע של תחילת המשחק (במאפייני הכדור), Game start (גֵיים סְטַרְט), שנמצא בסוג ארוע Other תמונה:gmaker_other.png.

תמונה:gmaker_game_start.png

הפעולה שצריך לעשות בארוע הזה היא קביעת מספר החיים, שנמצאת בלשונית score (סְקוֹר) - ניקוד. תמונה:gmaker_lives.png

באפשרויות הפעולה צריך לכתוב את מספר החיים שרוצים לתת. אז נכתוב שם 3 ונקליק OK לאישור.


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


בשביל לאבד חיים כשהכדור נופל, נלך לארוע היציאה של הכדור מהחדר תמונה:gmaker_other.png, ונוסיף גם לו את הפעולה של קביעת מספר החיים. הפעם אנחנו לא רוצים לתת 3 חיים, אלא להוריד חיים. אז איזה מספר נכתוב? אם נכתוב 2, מספר החיים יהיה 2 אחרי כל נפילה, לא רק אחרי הנפילה הראשונה, וככה אף פעם לא יגמרו החיים. אנחנו רוצים שמספר החיים יהיה 1 פחות ממה שהוא באותו רגע. איך עושים את זה?

 ערך יחסי

בחלון אפשרויות הפעולה יש תיבת סימון Relative (רֵלַטִיב) - יחסי.

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

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


תמונה:gmaker_test_save.png עדיין לא רואים שום דבר מעניין. למה? כי החיים פשוט יורדים להם בשקט מ-3 ל-2, מ-2 ל-1, מ-1 ל-0, מ-0 ל--1, וכן הלאה. לא תכנתנו את המשחק לעשות שום דבר כשיש 0 חיים.



סוף החיים

כשיש 0 חיים, Game Maker מודיע לנו על הארוע הזה. הארוע נקרא No more lives (נוֹ מוֹר לַייוְוז - אין עוד חיים) ונמצא גם הוא בסוג ארוע Other תמונה:gmaker_other.png.

הפעולה שצריך לעשות בארוע הזה היא לסיים את המשחק: תמונה:gmaker_end_game.png. היא נמצאת בלשונית main2.


תמונה:gmaker_test_save.png עכשיו אפשר לראות אם הצלחנו לאבד חיים כמו שצריך! תנו לכדור ליפול ותראו אם המשחק נגמר אחרי שלוש נפילות.


המשתמש עלול להיות מופתע שפתאום נגמר לו המשחק... כדאי להראות לו כמה חיים נשארו לו.

 הצגת מספר החיים

Game Maker יודע להציג את מספר החיים בכמה צורות, ואנחנו נבחר בפשוטה מביניהן: להראות את מספר החיים בכותרת החלון. את כותרת החלון כדאי לקבוע בארוע תחילת המשחק תמונה:gmaker_other.png, אז נלך לארוע תחילת המשחק ונוסיף שם את הפעולה לקביעת כותרת החלון, שנמצאת בלשונית score. תמונה:gmaker_set_caption.png

לפעולה הזו יש הרבה אפשרויות, אז נעבור עליהן אחת-אחת:

  • show score (שוֹוּ סְקוֹר) - הצג הניקוד. עוד אין לנו ניקוד, אז נשנה את האפשרות הזו ל-don't show (דוֹנְט שוֹוּ) - אל תציג.
  • score caption (סְקוֹר קַפְּשֵן) - כותרת הניקוד (המלים שיוצגו ליד הניקוד).
  • show lives (שוֹוּ לַייוְוז) - הצג חיים. זה בדיוק מה שאנחנו רוצים לעשות, אז נשנה את האפשרות הזו ל-show - הצג.
  • lives caption (לַייוְוז קַפְּשֵן) - כותרת החיים (המלים שיוצגו ליד מספר החיים). אפשר להשאיר את הכותרת באנגלית, ואפשר לכתוב במקומה "חיים: " או "כדורים: ". שימו לב שצריך להיות רווח בסוף הכותרת שכותבים, אחרת מספר החיים יהיה צמוד לכותרת!
  • show health (שוֹוּ הֵלְתְ') - הצג בריאות. לא נתעסק בזה עכשיו.
  • health caption (הֵלְתְ' קַפְּשֵן) - כותרת הבריאות.

תמונה:gmaker_test_save.png עכשיו אפשר להקליק OK לאישור, ולראות אם אם באמת רואים את מספר החיים בכותרת החלון.



 ניקוד

ראינו ש-Game Maker יכול להראות לנו גם את הניקוד לצד החיים. בואו ננצל את זה!


עכשיו תורך:

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




תמונה:gmaker_test_save.png עכשיו המשתמשים יכולים לדעת כמה הם טובים במשחק!



 רשימת האלופים

Game Maker יודע לזכור מי זכה בניקוד הכי גבוה ולהציג טבלה עם עשרת הטובים ביותר. את הטבלה הזאת נציג למשתמש בסוף המשחק - בארוע No more lives (אין עוד חיים) תמונה:gmaker_other.png. אפשר למצוא את הפעולה להצגת הטבלה בלשונית score. תמונה:gmaker_highscore.png לא לשכוח לדאוג שפעולת הצגת הטבלה תתבצע לפני הפעולה לסגירת המשחק!


תמונה:gmaker_test_save.png עכשיו אפשר לתת גם לחברים ולבני משפחה לשחק.



עכשיו תורך:

להשמיע לשחקן צליל שמבשר על סיום המשחק לפני הצגת הטבלה.



נשאר רק עוד פרט אחד קטן: במקום לצאת מהמשחק אחרי הצגת הטבלה, ניתן למשתמש לשחק בו שוב, כדי שלא יצטרך לפתוח אותו כל פעם מחדש כדי להשתפר. (כשיימאס לו, הוא יוכל לסגור אותו בעצמו פשוט ע"י סגירת החלון.) בשביל זה צריך למחוק את הפעולה לסיום המשחק באמצעות בחירתה ולחיצה על מקש Delete, ובמקומה להוסיף את הפעולה של התחלת המשחק מחדש, שנמצאת בלשונית main2. תמונה:gmaker_restart.png


תמונה:gmaker_test_save.png עכשיו אפשר לשחק שוב ושוב ושוב ושוב...


 



.

שינוי משתנים

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

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

עד עכשיו קבענו ערכים למשתנים באמצעות פעולות מיוחדות כמו הפעולה לקביעת הניקוד, או הפעולה לקביעת הכיוון והמהירות. אבל יש גם פעולה כללית שמאפשרת לנו לשנות כל משתנה שנרצה: תמונה:gmaker_set_var.png קביעת ערך של משתנה. VAR זה קיצור של המלה variable (וַוארְיַאבֵּל) - משתנה. הפעולה לקביעת ערך של משתנה נמצאת בלשונית control (קוֹנְטְרוֹל) - בקרה.

המשתנה שאנחנו רוצים לשנות הוא מהירות הכדור, והשם שלו הוא speed.


{{{גודל}}}

כדאי לדעת:

שמות של משתנים יכולים לכלול רק אותיות באנגלית, ספרות, ואת הסימן קו_תחתי: _. התו הראשון בשם המשתנה לא יכול להיות ספרה.



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

  • variable - שם המשתנה. במקרה שלנו זה speed.
  • value - הערך שרוצים לתת למשתנה. אנחנו רוצים להגדיל את המשתנה, לכן נכתוב כאן 1 או 2 ונסמן את תיבת הסימון Relative, כדי שהמספר הזה יתווסף למהירות הנוכחית.



תמונה:gmaker_test_save.png נסו לשחק עכשיו. יותר קשה? מספיק קשה? יותר מדי קשה? נסו לשנות את המספר שמוסיפים למהירות הכדור בכל חבטה עד שרמת האתגר שהמשחק מציב תהיה לא גבוהה מדי ולא נמוכה מדי. המספר לא חייב להיות שלם - אפשר לכתוב גם 0.3 או 2.5 וכו'.


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

  1. תמונה:gmaker_other.png נלך לארוע היציאה של הכדור מהמסך.
  2. תמונה:gmaker_blue_move_button.png נעשה הקלקה כפולה על פעולת התנועה.
  3. בשדה speed נמחק את המספר שכתוב, ובמקומו נכתוב את המהירות הנוכחית: המשתנה speed.


{{{גודל}}}

כדאי לדעת:

כמו ש-Game Maker ידע להבין שכשכותבים לו פונקציה כמו (random(360 הוא צריך להפוך את זה למספר שהפונקציה מחזירה, ככה הוא גם יודע שכשכותבים לו שם של משתנה הוא צריך להציב במקומו את הערך של המשתנה. אפשר גם לכתוב ביטויים עם שמות משתנים, כמו למשל speed-1 או speed/2, וככה לכוונן טוב יותר את רמת האתגר של המשחק.




תמונה:gmaker_test_save.png יותר טוב, לא?


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

 משתנים חדשים

להבדיל מהכדור, המחבט לא זז כל הזמן אלא לפעמים הוא עוצר ואז המהירות שלו היא 0. לכן אי אפשר פשוט להגדיל את המהירות שלו כרגע (המשתנה speed), כי אנחנו רוצים שאחרי שהוא הגיע למהירות 20 ועצר, פעם הבאה שהמשתמש ילחץ על חץ המחבט שוב ינוע במהירות 20.

דרוש לנו משתנה חדש: המהירות של המחבט כאשר המשתמש לוחץ על חץ. אין משתנה מוכן כזה ב-Game Maker, לכן נצטרך ליצור משתנה כזה בעצמנו:

  1. נלך לחלון תכונות האובייקט של המחבט באמצעות הקלקה כפולה על אובייקט המחבט ברשימת המשאבים שמשמאל. למה למחבט ולא לכדור? כי זה משתנה של המחבט - אנחנו משתמשים בו בשביל לקבוע את מהירות המחבט, לא את מהירות הכדור.
  2. נוסיף למחבט ארוע יצירה, כי אנחנו רוצים לקבוע את המהירות שבה המחבט יוכל לנוע מיד כשהוא נוצר - לפני שהמשתמש מספיק ללחוץ על החצים. תמונה:gmaker_create.png
  3. נגרור לרשימת הפעולות של הארוע את הפעולה לקביעת ערך של משתנה. תמונה:gmaker_set_var.png
  4. בשדה variable נכתוב שם משמעותי למשתנה, למשל move_speed (מוּוְ סְפִּיד) - מהירות תנועה.
  5. בשדה value נכתוב את המהירות שבה המחבט יזוז כשהמשתמש ילחץ על חץ. (אצלי זה 10, אבל אולי אתם מעדיפים מהירות אחרת.)
  6. נאשר בהקלקה על OK.

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


עכשיו תורך:

שנו את ארועי הלחיצה על מקשי החצים כדי שיגרמו למחבט לנוע במהירות move_speed במקום במהירות 10.




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



{{{גודל}}}

כדאי לדעת:

בפיתוח תוכנה הרבה פעמים עושים שינויים כאלה, שלא משפיעים על הפעולה הנראית של התוכנה אלא רק על מה שקורה מאחורי הקלעים. שינויים כאלה נועדו לאפשר הוספת יכולות חדשות לתוכנה (כמו השינוי שעשינו כאן), החלפת חלקים איטיים ברכיבים מהירים יותר, או פשוט סידור נוח יותר להבנה ולתכנות של תוכנה גדולה ומסובכת. באנגלית, שינוי מסוג כזה נקרא refactoring (רִיפַקְטוֹרִינְג) - סידור מחדש.



עכשיו נוכל לשנות את מהירות התנועה של המחבט באמצעות קביעת ערך המשתנה move_speed אחרי כל חבטה. בשביל זה צריך

  1. להוסיף למחבט טיפול בארוע התנגשות עם הכדור. תמונה:gmaker_collision.png
  2. לרשימת הפעולות של הארוע הזה להוסיף פעולה של קביעת ערך משתנה. תמונה:gmaker_set_var.png
  3. באפשרויות הפעולה, להגדיל את המשתנה move_speed (בעזרת Relative).

תמונה:gmaker_test_save.png עכשיו גם המחבט אמור להאיץ עם התקדמות המשחק. נסו לשנות את מידת ההאצה שלו כדי להגיע לרמת משחק מאתגרת אבל לא קשה מדי.


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

 תוכנית מחשב עצמאית

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

  1. ללכת לתפריט File (פַייל) - קובץ.
  2. לבחור Create Executable (קְרִיאֵייט אֵקְסֵקְיוּטַבְּל) - הכן תוכנית.
  3. לבחור איפה לשמור את התוכנית שלכם.

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


{{{גודל}}}

כדאי לדעת:

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





קרידיט לויקיספר
 
 
  הודעות אפשר גם לשלוח לאיימל ioman1@walla.com