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

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



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

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

Small spaceship with sheild.png

אתגר:

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

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

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

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




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

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

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

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




כדאי לדעת:

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

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

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

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

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

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

עכשיו תורכם:

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

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

עכשיו תורכם:

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

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


Gmaker draw shield actions.png

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

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

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




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

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


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




אתגר:

לנסות להשתמש בפעולות הציור שעוד לא השתמשנו בהן:
  • הפעולה לציור טקסט Gmaker draw text button.png
  • הפעולה לציור אליפסה Gmaker draw ellipse button.png
  • הפעולה לציור קו Gmaker draw line button.png

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


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

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

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