Menu
CoddyTech

מהי קבוצה?

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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] = {}

challenge icon

אתגר

קל

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

הוסף כל תג לקבוצה 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

	# הדפס את מספר התגים ואת התגים עצמם
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר GDScript אונליין