מהי מנייה?
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 אינו מזוהה.
אתגר
קלהתוכנית קוראת מספר שלם מ־0 עד 3 שמייצג את מזג האוויר. תנו למספרים שמות באמצעות enum והדפיסו עצה.
- ברמה העליונה של הסקריפט, הכריזו על enum בשם
Weatherעם האפשרויותSUNNY,CLOUDY,RAINYו־SNOWY, בסדר הזה. - השוו את
weatherלאפשרויות של ה־enum (לא למספרים) והדפיסו שורה אחת:
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין