סיכום – מערכת בריאות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-GDScript של Coddy. שיעור 39 מתוך 65.
אתגר
קלבנו מערכת בריאות שבה רכיב הבריאות מכריז על כל שינוי, וסרגל בריאות מגיב אליו.
Health (health.gd) מאחסן את max_hp ואת hp (שניהם מתחילים בערך שניתן לבנאי) ומצהיר על שלושה אותות: damaged(amount, hp), healed(amount, hp) ו-died.
take_damage(amount)מפחיתה אתhp, אך לא מתחת ל-0, ופולטת אתdamagedעם כמות נקודות הבריאות שאבדה בפועל ועם ערך ה-hpהחדש. כש-hpמגיע ל-0, היא גם פולטת אתdied.heal(amount)מעלה אתhp, אך לא מעלmax_hp, ופולטת אתhealedעם כמות נקודות הבריאות ששוחזרה בפועל ועם ערך ה-hpהחדש. ריפוי כשהבריאות מלאה אינו פולט דבר.- ברגע ש-
hpהוא0, שתי המתודות אינן עושות דבר.
HealthBar (health_bar.gd) כוללת את watch(health), שמחברת את שלושת האותות למתודות שלה. הן מדפיסות את -8 HP [12/20], +5 HP [17/20] ו-Game over. הסרגל מאחסן את כמות נקודות הבריאות המרבית שלה הוא זקוק כמספר; אל תשמרו הפניה לאובייקט Health.
הקוד שסופק קורא את כמות נקודות הבריאות המרבית ואת מספר הפקודות שבאות אחריה (damage 8, heal 5), ואז מדפיס את כמות נקודות הבריאות הסופית. עבור ערך מרבי של 20 והפקודות damage 8, heal 5, heal 10, damage 30, heal 5, הוא מדפיס:
-8 HP [12/20]
+5 HP [17/20]
+3 HP [20/20]
-20 HP [0/20]
Game over
Final HP: 0את הקוד שלכם כתבו בקבצים health.gd ו-health_bar.gd. הקובץ main.gd מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
extends Node
func _ready():
# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
var health := Health.new(int(OS.read_string_from_stdin()))
var bar := HealthBar.new()
bar.watch(health)
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
if parts[0] == "damage":
health.take_damage(int(parts[1]))
elif parts[0] == "heal":
health.heal(int(parts[1]))
print("Final HP: ", health.hp)
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח selfמתודותמאפייניםבנאי (_init)חזרה – מחשבון פשוט2מאפייני מחלקה
משתני מופע לעומת משתנים סטטייםפונקציות סטטיותקובעי מאפייניםמאחזרי מאפייניםפרטיים לפי מוסכמהסיכום – מנהל חשבון בנק5כימוס
איברים ציבוריים ופרטייםאימות באמצעות Settersהסתרת מידעמאפיינים לקריאה בלבדסיכום – מערכת לניהול רשומות תלמידיםתרגלו בעצמכם: קומפיילר GDScript אונליין