תכנות לילדים באמצעות Game Maker/חייזרים/צעד 10: מגן

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



הפעלת מגן[עריכה]

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

אתגר:

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

בשביל להפעיל את המגן צריך:

  1. להוסיף דמות חדשה למשחק (אפשר לקרוא לה spaceship_with_shield) ולטעון אליה את התמונה של החללית עם המגן.
  2. להוסיף לחללית ארוע להפעלת המגן - למשל לחיצה על מקש Shift .
  3. כשהארוע הזה קורה, לשנות את דמות החללית ולכוון שעון מעורר (אפשר ל-100 צעדים). חשוב להשתמש בשעון מעורר אחר מזה שמשמש ליריות!
  4. להוסיף ארוע צלצול שעון מעורר ובו לשנות את דמות החללית חזרה לדמות הרגילה שלה. .

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




מצב מוגן[עריכה]

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

  1. בארוע היצירה של החללית נאתחל ל-0 משתנה בשם shield_on באמצעות הפעולה לקביעת ערך של משתנה . זה יסמן שהמגן כרגע לא מופעל (0 = לא).
  2. בארוע לחיצה על מקש Shift נשנה את shield_on ל-1, כדי לסמן "כן" - המגן מופעל. (שוב בעזרת הפעולה לקביעת ערך של משתנה )
  3. בארוע צלצול השעון המעורר, נשנה את shield_on חזרה ל-0 כדי לסמן "לא" - המגן לא מופעל.
  4. בארוע ההתנגשות בקליע של חייזר, נוסיף את הפעולה לבדיקת ערך של משתנה לפני הפעולה שהופכת את החללית לפיצוץ. בפעולה הזו נבדוק אם shield_on שווה ל-0, כדי שהחללית תתפוצץ רק אם היא בלי מגן.
  5. גם בארוע ההתנגשות בחייזר, נוסיף את הפעולה לבדיקת ערך של משתנה לפני הפעולה שמורידה את הבריאות. גם כאן נבדוק ש- shield_on שווה ל-0, כדי שהבריאות תרד רק אם החללית בלי מגן.

עכשיו החללית באמת מוגנת כשמפעילים את המגן.




כדאי לדעת:

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

מתי כדאי לשנות את האובייקט ומתי כדאי להשתמש במשתנה מצב?

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

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

איסוף מגינים[עריכה]

החללית תצטרך לאסוף מגינים כמו שהיא אוספת פצצות.

עכשיו תורכם:

להפוך את המגן לחיזוק שהחללית יכולה לאסוף:
  1. ליצור אובייקט shield (שִילְד) - מגן. אפשר להשתמש בתמונה הזאת בשביל הדמות שלו: .
  2. לתכנת את מנהל הפריטים ליצור גם מגינים, כמו שהוא יוצר פצצות וחייזרים. (לא לשכוח למחוק את המגינים שיוצאים מהחדר).
  3. לתכנת את החללית לאסוף מגינים (בארוע ההתנגשות עם המגן) ולשמור את מספר המגינים שהיא אספה במשתנה גלובלי global.shields (לזכור לאתחל אותו בתחילת המשחק).
  4. לתת לחללית להפעיל את המגן רק אם יש לה מגינים (כלומר, רק אם global.shields גדול מ-0). ואז להקטין ב-1 את מספר המגיניים שנשארו לה.

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

עכשיו תורכם:

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

כדי לצייר מגינים בלוח הניקוד, נשתמש באותן פעולות כמו הפעולות להצגת הפצצות. בשביל זה נבחר את כל הפעולות של ציור הפצצות (נגרור את העכבר מפעולת ההערה ועד סוף הבלוק, ככה שכל הפעולות שקשורות לציור הפצצות יראו "צבועות"). אז נעתיק אותן (בהקשה על Control+C) ונדביק אותן לפני הפעולות לציור המלבן (נלחץ על פעולה ההערה שלפני ציור המלבן, ואז נקיש Control+V).


עכשיו נערוך את הפעולות שהעתקנו כדי שיציירו מגינים ולא פצצות:

  1. קודם כל, נשנה את ההערה כדי להסביר מה הפעולות עושות.
  2. אחר כך נשנה את הפעולה לקביעת ערך של משתנה - במקום לאתחל את המשתנה bomb_x, נאתחל משתנה בשם shield_x.
  3. את פעולת החזרה נשנה כך שהיא תחזור global.shields פעמים על הבלוק שאחריה.
  4. את פעולת ציור הדמות נשנה כך שתצייר את דמות המגן המוקטן. את השדה x נשנה ל- shield_x, ואת השדה y נשנה ל-40 כדי שהמגינים יופיע מתחת לפצצות.
  5. את הפעולה האחרונה לקביעת ערך של משתנה נשנה כך שהיא תגדיל את המשתנה shield_x ב-20.

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




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

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


נסו לאסוף יותר מגינים מפצצות כדי לראות אם המסגרת מתאימה לתוכן.




אתגר:

לנסות להשתמש בפעולות הציור שעוד לא השתמשנו בהן:
  • הפעולה לציור טקסט
  • הפעולה לציור אליפסה
  • הפעולה לציור קו

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


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

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

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