תכנות לילדים באמצעות Game Maker/פונג
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
פונג היה אחד ממשחקי המחשב הראשונים שנכתבו עוד על המחשבים הראשונים: השחקן שולט במחבט שיכול לנוע לצדדים, וצריך לחבוט בכדור כדי למנוע ממנו לברוח מהמסך.
לפני שמתחילים: הורדה והתקנה
קודם כל צריך להוריד ולהתקין את התוכנה שנעבוד בה: Game Maker (גֵיים מֵייקֵר), שבעברית זה אומר "מחולל משחקים" - כלומר: כלי שעוזר לנו ליצור משחקים. למי שרגיל להוריד תוכנות ולהתקין אותן זו לא תהיה בעיה - פשוט צריך ללכת אל האתר של Game Maker, להוריד את הגירסה האחרונה שיצאה ולהפעיל את קובץ ההתקנה שהורדת. אפשר להתקין על כל מחשב עם חלונות ועם DirectX (שבטח מותקן לך כבר ממילא).
אם זה בעיה בשבילך, אז זו תהיה הפעם האחרונה שנגיד לך לבקש עזרה מההורים או האחים שלך, כי את כל השאר יהיה אפשר לעשות לבד. אז קדימה: להגיד יפה "בבקשה" ממישהו שיתקין לך וישים את האייקון של Game Maker במקום בולט, כדי שיהיה לך קל להכנס אליו בעצמך.
בכניסה הראשונה ל-Game Maker, הוא שואל אם להתאים את עצמו למשתמשים מתקדמים. אנחנו רק מתחילים כרגע, אז עדיף להגיד לו לא: ללחוץ על הכפתור שכתוב עליו No (נוֹוּ).
זהו, עכשיו אפשר להתחיל ליצור משחק!
תכנות לילדים באמצעות Game Maker/פונג/צעד 1: המסך
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
הכרות עם Game Maker
כשמפעילים את Game Maker, זה מה שאמורים לראות:
בצד ימין יש שטח גדול וריק, שבו נשתמש בשביל לעבוד על המשחק. בצד שמאל יש רשימה של דברים שנשתמש בהם במשחק שלנו, מה שנקרא באנגלית resources (רִיסוֹרְסֶז) ובעברית "משאבים". כרגע עוד לא יצרנו שום דבר להשתמש בו, אז אין שם כלום מלבד כותרות לסוגים של משאבים. למעלה יש סרגל כלים עם כל מיני פעולות שאפשר לעשות. הפעולה הכי חשובה היא שמירת המשחק, כי אם לא נזכור לשמור את המשחק כל העבודה שנעשתה עלולה ללכת לאיבוד. אז נתחיל בזה:
שמירת משחק
לוחצים על הכפתור בצורת דיסקט (שלישי משמאל בסרגל הכלים) ומקלידים שם למשחק שאנחנו יוצרים. איזה שם? עדיף שם שיתאר את המשחק, כדי שלא נתבלבל כשיהיו לנו עשרות משחקים וכבר לא נזכור במה התחלנו. המשחק הראשון שלנו הוא מין פינג-פונג, אז קוראים לו "פונג", או באנגלית pong. אחרי שמקלידים את שם המשחק, בוחרים איפה לשמור אותו (זו בחירה שלך) ומקישים אֵנְטֵר או לוחצים על Save.
עכשיו אפשר להתחיל לבנות את המשחק הראשון
דבר ראשון: ליצור משהו שעובד
כשמקבלים כלי חדש, קודם כל צריך לבדוק שהוא בכלל עובד ורק אחר כך אפשר להתחיל לעשות איתו כל מיני דברים. זה חשוב במיוחד בכלים מורכבים שצריכים שהכל יתאים בשביל לעבוד, וכלים לפיתוח תוכנה כמו Game Maker הם תמיד מורכבים. בדרך כלל נהוג ליצור תוכנה שכל מה שהיא עושה כשמפעילים אותה זה להציג משהו למשתמש. זה אמנם לא נשמע מרשים, אבל בשביל ליצור משהו מרשים צריך קודם כל לדעת ליצור משהו עובד, וקל יותר לגרום לתוכנה פשוטה לעבוד מאשר לתוכנה מורכבת.
אז איך אפשר להציג משהו ב-Game Maker? בשביל זה צריך ליצור מקום שבו דברים יכולים להיות מוצגים. למקום כזה קוראים room (רוּם) - חדר. חדר יכול להכיל את כל המשחק שלך, או להיות חדר ממש במשחק שבו עוברים מחדר אחד לשני, או להכיל רמה במשחק שבו מתקדמים ברמות.
בשביל ליצור חדר חדש מקליקים על הכפתור שנראה כמו מסך בסרגל הכלים. קדימה, להקליק!
אחרי שיוצרים את החדר, אפשר לראות אותו בצד שמאל של החלון, ברשימת המשאבים, בתיקיה שנקראת Rooms (רוּמְז) - חדרים. בצד ימין נפתח לנו חלון שמאפשר לקבוע מה יהיה בחדר בדיוק, אבל כרגע אנחנו עוד לא רוצים שיהיה בו כלום אז אפשר לסגור את החלון הזה או סתם להתעלם ממנו.
עכשיו אפשר לנסות להפעיל את המשחק כדי לבדוק אם מה שיצרנו באמת עובד. בשביל להפעיל את המשחק צריך להקליק על כפתור ההפעלה שבצורת משולש ירוק.
עובד? מה שאמורים לראות זה חלון כמו זה שבתמונה. את החלון אפשר להזיז, לצמצם, ולסגור בהקלקה על האיקס או בהקשה על Esc.
אם הכל עבד כמו שצריך, צריך מהר לשמור את המשחק באמצעות הקלקה על כפתור השמירה.
אובייקטים
עכשיו יש לנו משחק עובד, אבל הוא די משעמם: הוא לא עושה כלום. בשביל שהוא יעשה משהו, צריך שיהיו בו דברים שעושים משהו - זזים, מתנגשים, מתפוצצים, וכן הלאה. לדבר שעושה משהו קוראים אוֹבְּיֵיקְט (עצם, חפץ) או באנגלית: object (אוֹבְּגֵ'קְט).
האובייקט הראשון שניצור יהיה מחבט שבעזרתו נחבוט בכדור. בשביל לעשות לעצמנו חיים קלים, המחבט יהיה די דומה לקו, וכל מה שהוא יעשה זה לזוז ימינה ושמאלה בתחתית החלון ולמנוע מהכדור לצאת מאזור המשחק (החדר).
בשביל ליצור אובייקט צריך להקליק על הכפתור בצורת כדור כחול.
אחרי שלוחצים, אפשר לראות את האובייקט ברשימת המשאבים שבצד שמאל, בתיקיית האובייקטים.
השם ש-Game Maker נתן לאובייקט החדש הוא object0. מבחינתו הרי לא משנה איך נקרא לאובייקטים שלנו - הוא לא מבין אנגלית וגם לא עברית. אבל לנו עדיף לקרוא לאובייקטים שלנו בשמות שבאמת מתאימים להם, כדי שיהיה קל לנו להסתדר גם כשיהיו לנו הרבה אובייקטים. וזה עוד יותר חשוב כשמתחילים לכתוב פקודות בשפת תכנות, אבל לזה נגיע בהמשך. בשביל לשנות את השם של האובייקט צריך לבחור את האובייקט בהקלקה, ואז להקליק על השם ולכתוב במקומו שם חדש. כדאי לקרוא לו פשוט "מחבט" באנגלית: bat (בַּט). (לא לשכוח ללחוץ אנטר אחרי שהקלדת את השם החדש!)
דמות
מימין לרשימת המשאבים, נפתח לנו חלון עם הכותרת Object Properties (אוֹבְּגֵ'קְט פְּרוֹפֵּרְטִיז) - תכונות האובייקט.
התכונה הראשונה שנגדיר תהיה איך האובייקט נראה או "הדמות" שלו, ובאנגלית: sprite (סְפְּרַייט). את הדמות של האובייקט קובעים בשדה שמצד שמאל. מאחר שעוד אין לנו דמויות בין המשאבים במשחק, ניצור דמות חדשה ע"י הקלקה על New (נְיוּ) - חדש.
עכשיו נפתח עוד חלון שמאפשר לנו להגדיר דמות. הפעם לא נצייר בעצמנו דמות, אלא נפתח דמות שמישהו אחר כבר צייר. בשביל זה צריך להקליק על הכפתור Load Sprite (לוֹוּד סְפְּרַייט - טעינת דמוּת). ואז Game Maker מביא אותנו לתיקיה שבה יש כמה תיקיות עם דמויות מוכנות. יש דמויות שיתאימו לנו בתיקיה breakout, אז נכנס לשם. אפשר פשוט לעבור על התמונות שם ולראות מה נראה נחמד, אבל לדעתי כדאי לבחור ב-bat1 או bat2. אחרי שבחרת תמונה (ולחצת אנטר או Open), הדמות תוצג בחלון הגדרת הדמות. נאשר בלחיצה על OK (הכפתור עם סימן וִי ירוק) - והנה יש לנו דמות למחבט שלנו!
אפשר לראות ציור קטן של הדמות הזאת ברשימת המשאבים מצד שמאל - גם ליד האובייקט שלנו bat, וגם כשמשאב נפרד בתיקיית הדמויות (Sprites). אמנם לשני המשאבים אותו ציור, אבל הם שונים מאוד! הדמות היא בסך הכל תמונה, ואילו האובייקט יוכל לעשות כל מיני דברים מעניינים, כולל להחליף דמויות במהלך המשחק, לזוז, להתנגש בדברים, להשמיע קולות, וכן הלאה. הדמות היא בסך הכל כמו בגד שהאובייקט לובש.
הצבת האובייקט על המסך
עכשיו צריך להכניס את האובייקט bat לחדר שיצרנו קודם, כדי שהוא יופיע במשחק. בשביל להכניס אובייקטים לחדר, צריך לפתוח את חלון תכונות החדר באמצעות הקלקה-כפולה על החדר ברשימת המשאבים.
לחלון תכונות החדר שנפתח יש שני חלקים: מימין יש תמונה של החדר וכל מה שיש בו (שזה כלום בינתיים) ומשמאל יש תכונות שאפשר לשנות. בשדה מצד שמאל למטה אפשר לבחור איזה אובייקטים להוסיף לחדר, ומעליו יש תמונה של האובייקט שנבחר. מאחר שכרגע יש במשחק רק אובייקט אחד - המחבט - אמורה להיות שם התמונה של המחבט. כדי לשים את האובייקט בחדר צריך פשוט להקליק איפשהו בתמונה של החדר (מימין) ומיד יופיע שם האובייקט. אם המקום שבו שמת את האובייקט לא מוצא חן בעיניך, אפשר למחוק את האובייקט בהקלקה בכפתור הימני של העכבר. בשביל המשחק שלנו, כדאי שהמחבט יהיה בתחתית המסך, פחות או יותר באמצע. (כדאי להגדיל את החלון כדי לראות את כל שטח החדר.)
אחרי שגמרת למקם את המחבט בחדר, צריך להקליק על הכפתור עם סימן וִי ירוק, שנמצא למעלה משמאל. עכשיו צריך לבדוק את מה שעשינו כדי לראות שהכל עובד כמו שהתכוונו:
להקליק על כפתור ההפעלה שבצורת משולש ירוק.
אם הכל הצליח, אמורים לראות חלון עם המחבט. הצלחת?
אז עכשיו צריך שוב לשמור! סוגרים את חלון המשחק ומקליקים על כפתור השמירה.
אירועים
אמנם יש לנו מחבט במשחק, אבל כרגע הוא לא ממש שימושי כי הוא עוד לא זז. אנחנו רוצים שהמחבט יזוז ימינה ושמאלה כשלוחצים על מקשי החצים. בשביל זה אנחנו צריכים להיות מסוגלים לעשות שני דברים:
- לדעת מתי המשתמש לוחץ על חץ.
- כשזה קורה, להזיז את המחבט.
Game Maker יודע לשים לב מה עושה המשתמש בכל רגע, והוא שולח על כך הודעות לכל האובייקטים: "שימו לב! המשתמש לחץ על חץ!" או "תראו, המשתמש הקליק בעכבר!". (הוא שם לב גם לדברים שהאובייקטים במשחק עושים ולא המשתמש - נכיר אותם בהמשך.) כל דבר כזה שקורה במשחק נקרא event (אֵוֵונְט) - ארוע. יש המון סוגים של ארועים, ורוב האובייקטים מתעלמים מרוב הארועים.
אובייקט המחבט שלנו צריך להגיב לארוע של לחיצה על חץ. בשביל להגיד לאובייקט לשים לב לאיזשהו ארוע, צריך לפתוח את חלון תכונות האובייקט ע"י הקלקה-כפולה על האובייקט ברשימת המשאבים, כמו בתמונה.
אז נפתח לנו מצד ימין חלון תכונות האובייקט. בחלק האמצעי שלו יש רשימה של Events (אֵוֵונְטס) - ארועים שהאובייקט מגיב עליהם. כרגע הרשימה ריקה, כי עוד לא אמרנו לאובייקט לאיזה אירועים הוא צריך להגיב. בשביל להוסיף אירוע לרשימה, צריך להקליק על הכפתור שמתחתיה Add event (אַד אֵוֵונְט) - הוסף ארוע.
מיד יקפוץ לעינינו חלון עם 12 כפתורים. כל כפתור מאפשר לבחור סוג שונה של אירועים. אם מסתכלים טוב על הציורים של הכפתורים, רואים שיש שם שלושה כפתורים שמצויירת עליהם מקלדת של מחשב, ובאמת בשלושתם יש ארועים של הקשה על מקשים במקלדת. אז איזה מהם נבחר?
ארוע מקש (Keyboard) מסמן שהמשתמש לוחץ על מקש. האירוע הזה קורה מרגע שהמשתמש התחיל ללחוץ על המקש, וחוזר שוב ושוב כל עוד המשתמש ממשיך ללחוץ.
ארוע לחיצה (Key Press) מסמן שהמשתמש התחיל ללחוץ על מקש. האירוע הזה קורה רק כשהמשתמש מתחיל ללחוץ על המקש, אבל לא קורה שוב עד שהמשתמש לא משחרר את המקש ולוחץ שוב.
ארוע שחרור מקש (Key Release) קורה כשהמשתמש משחרר את המקש שהוא לחץ עליו קודם.
אנחנו רוצים להגיד למחבט לזוז ברגע שהמשתמש לוחץ על חץ, ולכן נבחר באירוע מהסוג השני - האירוע שקורה רק כשהמשתמש מתחיל ללחוץ על מקש. ברגע שבוחרים בסוג האירוע הזה, צץ תפריט שבו אפשר לבחור לאיזה מקש מתייחס האירוע. נתחיל מהמקש של חץ שמאלה, ולכן נבחר Left (לֵפְט) - שמאל.
עכשיו האירוע של לחיצה על חץ שמאלה מופיע ברשימת האירועים של אובייקט המחבט.
פעולות
מימין לרשימת האירועים יש רשימה נוספת: Actions (אַקְשֵנְז) - פעולות. זו רשימת הפעולות שצריך לעשות כשהאירוע קורה. מימין לרשימת הפעולות יש כל מיני כפתורים - כל כפתור כזה מייצג פעולה, ואפשר לגרור אותו עם העכבר לרשימת הפעולות.
הפעולה שאנחנו רוצים היא שהמחבט יתחיל לזוז שמאלה, ובשביל זה צריך את הכפתור לפעולת תנועה - הכפתור שמצויירים עליו חצים אדומים בכל מיני כיוונים.
ברגע שגוררים את הכפתור לרשימת הפעולות, נפתח לנו חלון אפשריות הפעולה שנותן לקבוע את הכיוון ואת מהירות התנועה של האובייקט (וגם כמה דברים אחרים, שנראה בהמשך).
לוחצים על הכפתור עם חץ שמאלה כדי שהמחבט יזוז שמאלה, וכותבים 5 בשדה Speed (סְפִּיד) - מהירות.
עכשיו צריך ללחוץ OK, ואז אפשר לראות את פעולת התנועה ברשימת הפעולות.
יפה. עשינו מספיק דברים שאפשר להתבלבל בהם, אז הגיע זמן לבדוק: ללחוץ על כפתור הפעלת המשחק ולנסות לראות מה קורה במשחק כשלוחצים על חץ שמאלה.
ניסית? מה קרה? מה זה אומר?
המחבט שלנו יודע לזוז שמאלה כשלוחצים על החץ, אבל לא יודע לעצור כמפסיקים ללחוץ. קודם כל נשמור את מה שעשינו עד עכשיו, ואז נתכנת את המחבט לעצור.
ארועים נוספים
בשביל שהמחבט לא ימשיך לנוע לעד, צריך להגיד לו לעצור: כשקורה אירוע של שחרור מקש החץ שמאלה - לעמוד במקום.
|
עכשיו תורך:
יש לך כבר את הידע הדרוש בשביל לעשות את זה בעצמך, בלי הוראות. רוצה לנסות? אם זה לא יצליח, תמיד אפשר לחזור לגירסה השמורה של המשחק ואז לעקוב אחר ההוראות שבהמשך הדף. |
בשביל שהמחבט יעצור כשמפסיקים ללחוץ על החץ, צריך קודם כל להוסיף לרשימת האירועים שלו אירוע חדש באמצעות הקלקה על הכפתור Add event שמתחת רשימת האירועים, בדיוק כמו שעשינו קודם כשהוספנו את האירוע של לחיצה על החץ. אבל הפעם צריך לבחור באירוע של שחרור מקש.
(כדי להוסיף למשחק אירועים נוספים, אתם חוזרים על הפעולה האחרונה שעשיתם בפרק זה) בתפריט שצץ, נבחר שוב ב-Left - שמאל.
עכשיו נוסף לנו אירוע חדש לרשימת האירועים. רשימת הפעולות מימין ריקה, כי עוד לא הוספנו פעולות שיבוצעו באירוע הזה. הפעולה שאנחנו רוצים לעשות היא לעצור את המחבט, ובשביל זה שוב נגרור לרשימת הפעולות את הכפתור שמצויירים עליו חצים אדומים בכל מיני כיוונים - פעולת תנועה.
שוב נקבל חלון עם אפשרויות להגדיר את כיוון ומהירות התנועה. הפעם אנחנו רוצים לעצור את המחבט, לכן במקום לבחור חץ באחד הכיוונים צריך ללחוץ על הנקודה שבאמצע בין כל החצים - הנקודה הזו מסמנת עצירה במקום. אחרי שלוחצים על OK - הפעולה תופיע ברשימת הפעולות של הארוע.
עכשיו הזמן לבדוק אם זה באמת עובד: להריץ את המשחק, ולנסות ללחוץ על החץ שמאלה ולשחרר, ללחוץ ולשחרר. אם הצלחנו, המחבט יזוז שמאלה כל עוד המקש לחוץ, ויעצור כשמפסיקים ללחוץ. ואם זה אכן עובד, צריך מיד לשמור.
|
עכשיו תורך:
עכשיו אפשר לתכנת את המחבט לזוז גם לצד ימין (וכמובן לעצור את התנועה ימינה כשצריך). עושים את זה בדיוק כמו שתכנתנו את התנועה שמאלה, רק הפעם בוחרים במקש חץ ימינה: Right (רַייט) - ימין. |
לא לשכוח להפעיל את המשחק כדי לבדוק שמה שעשית באמת עובד, ואז לשמור את המשחק.
עריכת פעולות
קבענו שמהירות המחבט תהיה 5. זו מהירות נוחה לבדיקת המשחק, אבל קצת איטית כשרוצים ממש לשחק. בשביל לשנות את המהירות, צריך להגיע שוב לחלון שבו יש את האפשרויות של הפעולה. בשביל זה צריך קודם כל לבחור את האירוע המתאים (למשל, האירוע של לחיצה על חץ שמאלה) ואז לעשות הקלקה-כפולה על הפעולה שרוצים לשנות. בחלון שנפתח, משנים את המהירות ל-10 ומקליקים OK. (לא לשכוח לשנות גם את המהירות באירוע של לחיצה על החץ השני!)
עכשיו אפשר להפעיל את המשחק ולבדוק אם המהירות הזו מתאימה יותר. אם נראה לך שכן - זה הזמן לשמור את המשחק. אם לא - אפשר שוב לשנות את מהירות המחבט באותה דרך.
הפעולה שנרצה לעשות כשקורה ארוע התנגשות היא לעצור את המחבט. את זה כבר אין לך בעיה לעשות, נכון? פשוט צריך לגרור את פעולת התנועה לרשימת הפעולות ולהגדיר את כיוון התנועה כעצירה.
כמעט גמרנו. נשאר רק לשים את אובייקט הגבול בחדר. בשביל זה צריך לפתוח את חלון תכונות החדר באמצעות הקלקה-כפולה על החדר ברשימת המשאבים. אז צריך לבחור את אובייקט הגבול באזור להוספת אובייקטים לחדר (אם הוא לא בחור כבר ממילא).
עכשיו צריך לשים אותו בשתי הפינות התחתונות של החדר באמצעות הקלקה במקומות המתאימים, כמו בתמונה למעלה.
חשוב לשים לב שאמנם זהו אותו אובייקט, אבל אפשר לשים שניים ממנו בחדר. (אפשר גם יותר, אבל לנו מספיקים כרגע שניים.) יצרנו שני מופעים של אובייקט הגבול.
מופע
מופע (או באנגלית instance - אִינְסְטַנְס) זה האופן שבו אובייקט מופיע במשחק. למופע יש מיקום, קוראים לו ארועים (כמו התנגשות), והוא יכול להופיע או להעלם. האובייקט הוא זה שקובע איך המופעים שלו יתנהגו: איך הם יגיבו לארועים, או איזו דמות תהיה להם.
לדוגמה, אם נחליף את הדמות של אובייקט הגבול, שני המופעים שלו יראו כמו הדמות החדשה. אם נגדיר שאובייקט גבול מתפוצץ ונהרס כשיש ארוע התנגשות, אז זה יקרה לכל מופע שהמחבט יתנגש בו. אבל אם המחבט יתנגש במופע השמאלי של אובייקט הגבול ויפוצץ אותו, המופע הימני עדיין ישאר בריא ושלם - אצלו לא קרה ארוע התנגשות.
כשמתכנתים משחק, עובדים עם אובייקטים. כשמשחקים במשחק, עובדים עם מופעים של האובייקטים האלה.
עכשיו הגיע הזמן לשחק במשחק כדי לבדוק שהגבול באמת עוצר את המחבט כמו שצריך. אז ללחוץ על כפתור ההפעלה הירוק, ואם הכל עבד טוב - לשמור את המשחק.
כדור
המחבט מוכן, ועכשיו דרוש כדור שנוכל לחבוט בו. את ההתחלה כבר בטח ברור לך איך לעשות:
- ליצור אובייקט חדש
- לתת לו שם משמעותי, למשל ball (בּוֹל) - כדור.
- ליצור לו דמות מתאימה - אפשר לצייר לבד ואפשר לטעון דמות מוכנה (יש כדורים מתאימים בין הדמויות בתיקיה breakout שבה מצאנו את דמות המחבט). דמות הכדור עגולה ולא מלבנית, אז צריך להשאיר את הסימון בתיבת הסימון Transparent שמסמנת שיש בתמונה חלקים שקופים.
- להוסיף את אובייקט הכדור לחדר, איפשהו באמצע.
- להפעיל את המשחק כדי לבדוק שהכדור מופיע כמצופה.
- לשמור את המשחק.
עכשיו צריך שהכדור יזוז. בשביל לעשות את זה צריך להוסיף לו פעולת תנועה באיזשהו ארוע. אבל איזה ארוע? הכדור אמור לזוז כל הזמן, הוא לא אמור לעמוד במקום ולחכות שנלחץ על חצים בשביל להזיז אותו. לכן נגרום לו לזוז מרגע שהוא נוצר.
ארוע יצירה
כשאובייקט נוצר קורה ארוע היצירה שלו, ו-Game Maker מודיע לו "נוצרת!". זה הארוע הראשון שהאובייקט שומע עליו, ולכן זו הזדמנות בשביל האובייקט לעשות פעולות שהוא חייב לעשות לפני שקורים לו דברים אחרים. אנחנו נשתמש בארוע היצירה בשביל להגיד לכדור לזוז. בשביל זה צריך:
- להקליק על הכפתור להוספת ארוע שבחלון תכונות האובייקט של הכדור.
- לבחור את ארוע היצירה Create.
- להוסיף פעולת תנועה . כדאי שמהירות התנועה תהיה קטנה ממהירות התנועה של המחבט, כדי שהמשתמש יצליח לחבוט בכדור (למשל, מהירות 3 או 5). ובאיזה כיוון תהיה התנועה? אפשר ללחוץ על יותר מחץ אחד, ואז הכדור יבחר אחד מהכיוונים האלה באופן אקראי. ככה בכל פעם שנשחק הכדור יזוז בכיוון אחר ובלתי צפוי. כדאי לבחור את ארבעת החצים האלכסוניים - תנועה ישר היא משעממת יחסית.
עכשיו כדאי להפעיל את המשחק כדי לבדוק אם הכדור באמת זז, ואם כן - לשמור את המשחק.
אם הכדור באמת זז, אז הוא בורח החוצה מהמסך! צריך לעצור אותו, ולהחזיר אותו חזרה.
פעולת ניתור
כבר עצרת אובייקט קודם - כששמת שני מופעים של אובייקט הגבול משני הצדדים של החדר, ותכנתת את המחבט לעצור כשהוא נתקל בהם. כדי לעצור את הכדור, נצטרך להקיף כמעט את כל החדר במופעים של אובייקט הגבול - הכל מלבד הצד התחתון, כי אם הכדור מגיע לצד התחתון לא צריך לעצור אותו אלא לסיים את המשחק (ואת זה נעשה בהמשך).
אז עכשיו צריך לעשות שני דברים:
- להקיף את החדר במופעים של אובייקט הגבול (מלבד בצד התחתון) כמו בתמונה למטה.
- לטפל בארוע ההתנגשות של הכדור בגבול.
הפעם אנחנו לא רוצים שהכדור סתם יעצור כשהוא מתנגש בגבול, אלא שינתר ממנו חזרה וימשיך לנוע. למרבה המזל, אנחנו לא צריכים להגיד מראש באיזה כיוון ומהירות לנתר חזרה, כי ל-Game Maker יש פעולה מיוחדת לניתור מאובייקטים שמתנגשים בהם: Bounce (בּאוּנְס) - ניתור.
אז צריך לגרור את הפעולה הזאת לרשימת הפעולות של ארוע ההתנגשות, ולהקליק על אישור כי הערכים שכתובים באפשרויות הפעולה במקרה מתאימים לנו.
עכשיו צריך להפעיל את המשחק ולבדוק מה קורה. אם הכדור מנתר חזרה מהגבול - אפשר לשמור את המשחק ולהמשיך הלאה.
מה הלאה? לדאוג שהכדור ינתר גם מהמחבט: שוב צריך להוסיף לכדור ארוע התנגשות, הפעם במחבט, ולגרור את פעולת הניתור לרשימת הפעולות של הארוע. אבל הפעם אי אפשר לאשר את הערכים שכתובים באפשרויות הפעולה, כי הפעם הם לא מתאימים לנו.
precise (פֵּרְסַייס) - מדוייק, האם הניתור צריך לפי הצורה המדוייקת של הדמות שמתנגשים בה, או שמספיק לחשב את כיוון הניתור כאילו האובייקט התנגש בקיר ישר. הפעם לא מתאים לנו לנתר כאילו המחבט הוא ישר, כי נרצה שכשהכדור פוגע בקצוות המעוגלים של המחבט הוא ינתר בזווית שונה. לכן צריך לשנות את הערך של השדה הזה ל-precisely (פֵּרְסַייסְלִי) - בדיוק.
against (אַגֵיינְסְט) - כנגד, האם האובייקט צריך לנתר רק כנגד אובייקטים שהגדרנו אותם יציבים או כנגד כל אובייקט. המחבט שלנו הוא לא יציב, לכן צריך לשנות את הערך של השדה הזה ל-all objects (אוֹל אוֹבְּגֵ'קְטְס) - כל האובייקטים.
אחרי שגומרים לעשות הזה, הגיע הזמן לחזור על השגרה הרגילה: להפעיל את המשחק בשביל לבדוק שהניתור מהמחבט באמת עובד, ואם כן - לשמור.
כשמשחקים קצת במשחק שיצרנו, די מהר רואים שתנועות הכדור כמעט חוזרות על עצמן: תמיד הוא מתחיל לנוע בדיוק באחד מכיווני התנועה שהגדרנו לו וחוזר בדיוק על אותו מסלול. היה מעניין יותר אם הכדור היה יכול לנוע גם בכיוונים אחרים, למשל באלכסון תלול יותר או מתון יותר.
פעולת תנועה מדוייקת
פעולת התנועה שהשתמשנו בה עד עכשיו מאפשרת לתכנת תנועה רק בשמונה כיוונים (למעלה, למטה, לצדדים, ובאלכסונים) אבל לא מאפשרת לתכנת תנועה בכיוונים שביניהם. בשביל זה משתמשים בפעולת התנועה המדוייקת, שהסימן שלה זה חצים כחולים.
אז בואו נחליף את התנועה ההתחלתית של הכדור בתנועה מדוייקת:
- לבחור את ארוע היצירה של הכדור.
- למחוק מרשימת הפעולות שלו את פעולת התנועה עם החצים האדומים (פשוט לבחור אותה וללחוץ על מקש Delete).
- במקומה, לגרור לרשימת הפעולות את פעולת התנועה המדוייקת עם החצים הכחולים.
- בחלון אפשרויות הפעולה, לכתוב את המהירות כרגיל בשדה המהירות speed.
-
מעל שדה המהירות, יש שדה direction (דַיירֵקְשֵן) - כיוון. שם אפשר להגדיר את הכיוון באמצעות מספר שמציין את הזווית במעלות ביחס לתנועה לצד ימין. כלומר, תנועה ימינה תהיה כיוון 0, תנועה למעלה תהיה כיוון 90, בשביל תנועה שמאלה צריך לכתוב בשדה הכיוון 180, ובשביל תנועה למטה - 270 (או -90). מספרים אחרים יגדירו כיווני ביניים בין הכיוונים האלה. כדאי לנסות לכתוב כאן מספרים שונים ולראות מה יוצא. (למשל: 270, או 300, או 200, או מספרים אחרים.)
הכדור ייפול בזווית שכתבת בשדה direction.
אבל אנחנו לא רוצים לקבוע כיוון מסויים מראש, אלא להגריל באופן אקראי כיוון כלשהו. לכן נכתוב בשדה הכיוון direction את הביטוי random(360).
random
מה זה? למה סוגריים? אפשר לכתוב מלים במקום מספרים? אפשר לכתוב מלים מסויימות ש-Game Maker מבין, במקום מספרים. אם נכתוב מלים שהוא לא מכיר אז תהיה שגיאה כשננסה להפעיל את המשחק (נסו ותראו!).
מה זה אומר ש-Game Maker מבין מלה? זה אומר שמוגדר לו איך לקחת את המלה הזו ולהפוך אותה למספר. כשיהיה לו מספר במקום המלה, הוא יוכל לעבוד איתו (למשל לקבוע את הכיוון המתאים לתנועת הכדור).
איך הופכים מלה למספר? יש מלים ש-Game Maker יודע להפוך מיד למספר. הן נקראות "משתנים" ונדבר עליהם יותר בהמשך. יש מלים אחרות, כמו random, שעוזרות להפוך מספר אחד (או יותר) למספר אחר. מלים כאלה נקראת פוּנקציות. הפונקציה random לוקחת את המספר בסוגריים (שנקרא פַּרַמֵטֵר) ובמקומו מחזירה מספר אקראי שקטן ממנו. ככה ש-random(360) תחזיר מספר אקראי כלשהו בין 0 לבין 360. יש עוד הרבה פונקציות ב-Game Maker, ובתכנות מתקדם יותר משתמשים בהן המון.
עכשיו צריך שוב לבדוק שהכל עובד ולשמור את המשחק.
ביטויים
קבענו את הכיוון ל-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 או כל ביטוי אחר, במקום מספר.
עכשיו צריך לראות שזה באמת עובד
פעולות על פעולות
כשאובייקט יוצא מהמסך, Game Maker מודיע לו על הארוע הזה. אז נוסיף את הארוע הזה לאובייקט הכדור:
- ללחוץ על הוספת ארוע.
- לבחור בסוג ארוע Other (אַזֵר) - אחר .
- בתפריט שצץ לבחור Outside Room (אַוּוטְסַייד רוּם) - מחוץ לחדר.
איזה פעולה נרצה לעשות כשזה קורה? הפעם יש שתי פעולות שצריך לעשות: להביא את הכדור חזרה לנקודת ההתחלה, ולהגריל שוב את כיוון התנועה שלו. בשביל להחזיר אובייקט לנקודת ההתחלה שלו בחדר, נשתמש בפעולת המעבר למיקום ההתחלתי:
וכרגיל, צריך לבדוק.
את הפעולה של קביעת כיוון נפילה אקראי כבר עשינו בארוע היצירה של האובייקט. במקום לכתוב מחדש את כל המספרים (והביטויים), אפשר פשוט להעתיק אותה משם:
- להקליק על ארוע היצירה ברשימת הארועים של אובייקט הכדור.
- ברשימת הפעולות של הארוע מופיעה פעולת התנועה המדוייקת (חצים כחולים). לבחור אותה באמצעות הקלקה, ולהעתיק אותה בהקשה על Ctrl+C.
- ברשימת הארועים, להקליק על ארוע היציאה מהחדר כדי לחזור אליו.
- להקליק על רשימת הפעולות, ואז להדביק כאן את הפעולה שהעתקנו באמצעות הקשה על Ctrl+V.
עכשיו כל פעם שהכדור נופל למטה, הוא אמור לחזור להתחלה ולנוע בכיוון אקראי חדש. אפשר להזיז את המחבט הצידה ולצפות בגשם הכדורים.
צלילים
בואו נוסיף צליל נפילה כשהכדור נופל למטה. בשביל זה קודם צריך להוסיף למשחק משאב מתאים, משאב מסוג Sound (סַאוּנְד) - צליל:
- להקליק על הכפתור להוספת צליל בסרגל הכלים.
- לתת לצליל שם משמעותי, למשל fall_sound (פוֹל סַאוּנְד) - צליל נפילה.
- להקליק על הכפתור Load Sound (לוֹוּד סַאוּנְד) - טען צליל.
- לבחור קובץ צליל כלשהו. אפשר לבחור צלילים מהתיקיה עם הדוגמאות שמגיעות עם Game Maker, ואפשר גם צלילים אחרים שיש לכם במחשב.
- לשמוע את הצליל שבחרתם באמצעות הקלקה על המשולש הירוק. אם הוא לא מתאים - אפשר לטעון צליל אחר עד שמוצאים משהו מספיק טוב.
- להקליק OK לאישור.
|
כדאי לדעת:
גם משאב מסוג דמות אפשר להוסיף עוד לפני שיש לדמות אובייקט שמשתמש בה. בשביל להוסיף דמות צריך להקליק על כפתור הפק-מן האדום בסרגל הכלים. |
נחזור לחלון תכונות אובייקט הכדור ולארוע היציאה של הכדור מהחדר. הכפתור של הפעולה להשמעת צליל לא נמצא בין כפתורי הפעולות שעל המסך - הוא מתחבא בלשונית השניה, שמסומנת בתמונה.
מהלשונית הזו אפשר לקחת את הכפתור לפעולה של השמעת צליל ולגרור אותו לרשימת הפעולות. בחלון אפשרויות הפעולה, צריך לשנות את השדה sound (צליל) לצליל שלנו, וללחוץ אישור.
שומעים?
|
עכשיו תורך:
להוסיף צלילים גם להתנגשות של הכדור במחבט ובגבול. |
טוב ויפה: הכדור יודע ליפול ולחזור חזרה כדי שנוכל לשחק שוב. אבל המשחק מתחיל שוב די בפתאומיות, ככה שאחרי הנפילה המשתמש עלול להתפס לא מוכן לסיבוב הבא. בואו ניתן לו קצת זמן להתאושש.
השהיה
בשביל לגרום למשחק לעצור לכמה זמן, משתמשים בפעולת השהיה: . את פעולת ההשהיה אפשר למצוא בלשונית השלישית "main2".
השדה הראשון בחלון אפשרויות הפעולה הוא milliseconds (מִילִיסֵקֵנְדְס) - אלפיות שניה. בואו ננסה לראות אם תתאים לנו השהיה של 1000 אלפיות שניה (כלומר: שניה אחת בדיוק). אז אפשר להשאיר את הערך בשדה על 1000, ולהקליק על אישור.
איך זה עובד?
קצת מוזר לראות כדור עומד באמצע המסך ואז פתאום מתחיל ליפול. עדיף שקודם תעבור ההשהיה, ורק אז יופיע הכדור.
סדר הפעולות
כשקורה ארוע, Game Maker מבצע את הפעולות שהגדרנו לו לפי הסדר שהן מופיעות ברשימת הפעולות של הארוע. בשביל לשנות את סדר הביצוע, צריך פשוט לגרור את הפעולות למעלה ולמטה ברשימה עד שמגיעים לסדר הפעולות הרצוי.
אנחנו רוצים שקודם כל ישמע צליל הנפילה, אחר כך תהיה השהיה, ורק אחר כך הכדור יחזור לנקודת ההתחלה שלו ויתחיל לנוע בכיוון חדש. אז עכשיו צריך לדאוג לגרור את הפעולות עד שמגיעים לסדר הזה.
אפשר לנסות לשנות את אורך ההשהיה, או לנסות סדר אחר לפעולות, ולראות איך זה משפיע על המשחק.
|
עכשיו תורך:
להוסיף השהיה גם בתחילת המשחק, כדי שהשחקן לא יופתע מנפילת הכדור הראשון. |
חיים
כדי להגביל את מספר הפעמים שהכדור יכול לחזור למשחק אחרי נפילה, נתכנת אותו כך שיאבד "חיים" בכל נפילה, עד שיגמרו לו כל החיים והמשחק יסתיים.
בשביל לאבד חיים, צריך קודם כל שיהיו חיים שאפשר לאבד אותם... נקבע שבתחילת המשחק המשתמש מקבל 3 חיים. בשביל זה נרצה לטפל בארוע של תחילת המשחק (במאפייני הכדור), Game start (גֵיים סְטַרְט), שנמצא בסוג ארוע Other .
הפעולה שצריך לעשות בארוע הזה היא קביעת מספר החיים, שנמצאת בלשונית score (סְקוֹר) - ניקוד.
באפשרויות הפעולה צריך לכתוב את מספר החיים שרוצים לתת. אז נכתוב שם 3 ונקליק OK לאישור.
עדיין לא רואים שום הבדל במשחק - לא מספיק לתת חיים, צריך גם לקחת אותם כשהכדור נופל.
בשביל לאבד חיים כשהכדור נופל, נלך לארוע היציאה של הכדור מהחדר , ונוסיף גם לו את הפעולה של קביעת מספר החיים. הפעם אנחנו לא רוצים לתת 3 חיים, אלא להוריד חיים. אז איזה מספר נכתוב? אם נכתוב 2, מספר החיים יהיה 2 אחרי כל נפילה, לא רק אחרי הנפילה הראשונה, וככה אף פעם לא יגמרו החיים. אנחנו רוצים שמספר החיים יהיה 1 פחות ממה שהוא באותו רגע. איך עושים את זה?
ערך יחסי
בחלון אפשרויות הפעולה יש תיבת סימון Relative (רֵלַטִיב) - יחסי.
כשמגדירים פעולה כפעולה יחסית באמצעות סימון התיבה הזאת, המספר שכותבים מתווסף לערך הקיים. ככה שאם נכתוב 1 ונסמן Relative, מספר החיים יהיה 1 ועוד מספר החיים שהיה לנו קודם. למשל, אם קודם היו לנו 3 חיים, אחרי הפעולה יהיו 4.
אבל אנחנו רוצים שיהיו פחות חיים, לא יותר! לכן נכתוב -1 ונסמן Relative - ככה מספר החיים יהיה מה שהיה קודם ועוד -1, כלומר: מה שהיה קודם פחות 1.
עדיין לא רואים שום דבר מעניין. למה? כי החיים פשוט יורדים להם בשקט מ-3 ל-2, מ-2 ל-1, מ-1 ל-0, מ-0 ל--1, וכן הלאה. לא תכנתנו את המשחק לעשות שום דבר כשיש 0 חיים.
סוף החיים
כשיש 0 חיים, Game Maker מודיע לנו על הארוע הזה. הארוע נקרא No more lives (נוֹ מוֹר לַייוְוז - אין עוד חיים) ונמצא גם הוא בסוג ארוע Other .
הפעולה שצריך לעשות בארוע הזה היא לסיים את המשחק: . היא נמצאת בלשונית main2.
עכשיו אפשר לראות אם הצלחנו לאבד חיים כמו שצריך! תנו לכדור ליפול ותראו אם המשחק נגמר אחרי שלוש נפילות.
המשתמש עלול להיות מופתע שפתאום נגמר לו המשחק... כדאי להראות לו כמה חיים נשארו לו.
הצגת מספר החיים
Game Maker יודע להציג את מספר החיים בכמה צורות, ואנחנו נבחר בפשוטה מביניהן: להראות את מספר החיים בכותרת החלון. את כותרת החלון כדאי לקבוע בארוע תחילת המשחק , אז נלך לארוע תחילת המשחק ונוסיף שם את הפעולה לקביעת כותרת החלון, שנמצאת בלשונית score.
לפעולה הזו יש הרבה אפשרויות, אז נעבור עליהן אחת-אחת:
- show score (שוֹוּ סְקוֹר) - הצג הניקוד. עוד אין לנו ניקוד, אז נשנה את האפשרות הזו ל-don't show (דוֹנְט שוֹוּ) - אל תציג.
- score caption (סְקוֹר קַפְּשֵן) - כותרת הניקוד (המלים שיוצגו ליד הניקוד).
- show lives (שוֹוּ לַייוְוז) - הצג חיים. זה בדיוק מה שאנחנו רוצים לעשות, אז נשנה את האפשרות הזו ל-show - הצג.
- lives caption (לַייוְוז קַפְּשֵן) - כותרת החיים (המלים שיוצגו ליד מספר החיים). אפשר להשאיר את הכותרת באנגלית, ואפשר לכתוב במקומה "חיים: " או "כדורים: ". שימו לב שצריך להיות רווח בסוף הכותרת שכותבים, אחרת מספר החיים יהיה צמוד לכותרת!
- show health (שוֹוּ הֵלְתְ') - הצג בריאות. לא נתעסק בזה עכשיו.
- health caption (הֵלְתְ' קַפְּשֵן) - כותרת הבריאות.
עכשיו אפשר להקליק OK לאישור, ולראות אם אם באמת רואים את מספר החיים בכותרת החלון.
ניקוד
ראינו ש-Game Maker יכול להראות לנו גם את הניקוד לצד החיים. בואו ננצל את זה!
עכשיו המשתמשים יכולים לדעת כמה הם טובים במשחק!
רשימת האלופים
Game Maker יודע לזכור מי זכה בניקוד הכי גבוה ולהציג טבלה עם עשרת הטובים ביותר. את הטבלה הזאת נציג למשתמש בסוף המשחק - בארוע No more lives (אין עוד חיים) . אפשר למצוא את הפעולה להצגת הטבלה בלשונית score. לא לשכוח לדאוג שפעולת הצגת הטבלה תתבצע לפני הפעולה לסגירת המשחק!
עכשיו אפשר לתת גם לחברים ולבני משפחה לשחק.
|
עכשיו תורך:
להשמיע לשחקן צליל שמבשר על סיום המשחק לפני הצגת הטבלה. |
נשאר רק עוד פרט אחד קטן: במקום לצאת מהמשחק אחרי הצגת הטבלה, ניתן למשתמש לשחק בו שוב, כדי שלא יצטרך לפתוח אותו כל פעם מחדש כדי להשתפר. (כשיימאס לו, הוא יוכל לסגור אותו בעצמו פשוט ע"י סגירת החלון.) בשביל זה צריך למחוק את הפעולה לסיום המשחק באמצעות בחירתה ולחיצה על מקש Delete, ובמקומה להוסיף את הפעולה של התחלת המשחק מחדש, שנמצאת בלשונית main2.
עכשיו אפשר לשחק שוב ושוב ושוב ושוב...
.
|