מהי קבוצה?
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 31 מתוך 78.
קבוצה היא אוסף של ערכים ייחודיים: כל ערך מופיע בה פעם אחת או לא מופיע כלל. השאלה ששואלים קבוצה היא "האם הערך הזה הוא איבר בה?". התגים ששחקן זכה בהם, השלבים שכבר ביקרו בהם ושמות המשתמש שכבר נתפסו הם קבוצות.
מערך שומר כל עותק שתוסיף:
var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3ל-GDScript אין טיפוס Set. במקום זאת, משתמשים במילון: המפתחות שלו ייחודיים, ולכן המפתחות הם איברי הקבוצה. לא משתמשים בערכים, ולפי המוסכמה כל ערך הוא true:
var items := {"sword": true, "shield": true}
items["sword"] = true # כבר קיים בקבוצה: שום דבר לא משתנה
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]keys() מחזירה את האיברים כמערך, לפי הסדר שבו הם נוספו לראשונה. קבוצה ריקה היא מילון ריק, {}.
בליטרל של קבוצה כל איבר מופיע פעם אחת. כתיבה של אותו מפתח פעמיים בתוך {} היא שגיאה שעוצרת את התוכנית לפני שהיא רצה.
כדי לציין במפורש את הטיפוס של הקבוצה, השתמשו במילון מטיפוס מוגדר: var badges: Dictionary[String, bool] = {}
אתגר
קלשחקן שיחק בארבעה משחקים וקיבל תג אחד בכל משחק. חלק מהתגים חוזרים. התוכנית קוראת ארבע שורות קלט, שם של תג אחד בכל שורה.
הוסף כל תג לקבוצה badges, ואז הדפס את מספר התגים השונים ואת איברי הקבוצה כמערך. עבור התגים Sniper, Medic, Sniper ו-Builder, הפלט הוא:
Unique badges: 3
["Sniper", "Medic", "Builder"]נסו בעצמכם
extends Node
func _ready():
var badges := {}
for i in range(4):
var badge := OS.read_string_from_stdin()
# הוסף את התג לקבוצה
pass
# הדפס את מספר התגים ואת התגים עצמם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין