Menu
CoddyTech

מהי מנייה?

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 37 מתוך 78.

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

var state := 1
if state == 1:
	print("Running")

enum (קיצור של enumeration) נותן שם לכל אפשרות. GDScript ממספר את השמות עבורך, החל מ־0:

enum State { IDLE, RUN, JUMP }

עכשיו כותבים State.RUN במקום 1: שם ה-enum, נקודה והאפשרות. הקוד אומר מה המשמעות:

var state := State.RUN
if state == State.RUN:
	print("Running")

enum מוכרז ברמה העליונה של הסקריפט, לצד func _ready(): ולא בתוכו. שורת enum בתוך פונקציה היא שגיאה שעוצרת את התוכנית לפני שהיא רצה:

extends Node

enum State { IDLE, RUN, JUMP }

func _ready():
	var state := State.JUMP
	print(state) # 2

האפשרויות הן קבועים, ולכן State.RUN = 5 היא שגיאה. אפשרות שאויתה באופן שגוי, כמו State.RUNN, מדווחת לפני שהתוכנית רצה, בעוד שמספר שגוי כמו 3 במקום 2 אינו מזוהה.

challenge icon

אתגר

קל

התוכנית קוראת מספר שלם מ־0 עד 3 שמייצג את מזג האוויר. תנו למספרים שמות באמצעות enum והדפיסו עצה.

  1. ברמה העליונה של הסקריפט, הכריזו על enum בשם Weather עם האפשרויות SUNNY, CLOUDY, RAINY ו־SNOWY, בסדר הזה.
  2. השוו את weather לאפשרויות של ה־enum (לא למספרים) והדפיסו שורה אחת:
  • Weather.SUNNY: Wear sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

עבור הקלט 2, הפלט הוא:

Take an umbrella

נסו בעצמכם

extends Node

# הכריזו כאן על ה-enum בשם Weather

func _ready():
	var weather := int(OS.read_string_from_stdin())
	# השוו את weather לאפשרויות של ה-enum והדפיסו את העצה
	pass
quiz iconבחנו את עצמכם

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

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

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