תנאים ואופראטורים
עד עכשיו למדנו איך לכתוב תסריט או אלגוריתם פשוטים מאוד, שכאשר הרצנו אותם התרחש על הבמה משהו קבוע. לדוגמה - כדור נכנס לסל.
אלגוריתם כזה לא ממש יכול ליצור משחק מהנה, כי הוא כלל לא מושפע מהתנהגות של השחקן - כלומר, שלנו.
בדוגמה של הסל - בכל פעם שנילחץ על הגדל הירוק, הכדור ייכנס לסל. זו אנימציה, לא משחק.
לדוגמה, נחשוב על משחקים שבהם השחקן "אוסף" חפצים - מטבעות, יהלומים, או כל דבר אחר.
ננסה לנחש איזה תסריט/קוד כתוב בתוך המוח של המשחק.
אפשר להניח שיש שם משהו בסגנון הזה:
"אם דמות השחקן נוגעת בחפץ, הוסף עוד חפץ אחד לשחקן".
מכירים דוגמאות למשחקים כאלה?
נחזור למשחק שהופיע ביחידה הקודמת - בעיטה בכדורגל. שיפצנו אותו כדי שיראה טוב יותר.
זו אנימציה נחמדה. אבל אין פה באמת משחק.
כנסו לסביבת הלמידה של מדעי המחשב ורובוטיקה ופיתחו את הפרוייקט
משחק בעיטה בכדור
בלוק זה נקרא
"תנאי פשוט"
הקוד הזה בעצם מבצע השוואה ובודק אם תנאי כלשהו התקיים (נגיעה של שחקן בחפץ).
אם התנאי התקיים (למשל, אם דמות השחקן נוגעת בחפץ) אז יתבצע הקוד הבא, שנכנס לתוך הבלוק.
נכיר את הבלוקים ממשפחת ה"בקרה", שיעזרו לנו לכתוב תנאים.
מה אפשר לעשות בעזרת השוואה ותנאי? הכול!
ערכו את אנימציית הכדורגל כך שכאשר הכדור נכנס לשער, יקרה משהו חגיגי!
דוגמאות:
הגיע הזמן לעשות!
שימו לב:
המילה goal היא השם שנתנו לדמות השער. אצלכם יופיע השם שנתתם אתם לאותה דמות.
כדי לזהות "כניסה" של הכדור לשער, ניתן לבדוק אם דמות הכדור "נוגעת" בדמות של השער.
רמז:
הבלוק המתאים נראה כך
והוא נמצא תחת "חיישנים".
תרגיל בעיטה בכדור
פתרון בעיטה בכדור
הצלחתם? מקווים שכן.. אם לא, תצליחו בפעם הבאה.
נתקדם - אילו תנאים נוספים יכולים להיות לנו? נחשוב על משחק כדורגל.
אם הכדור נכנס לשער
יש ריקוד ניצחון נחמד.
ואם לא?
ובכן, אין ריקוד ניצחון,
אבל אולי השוער מתלהב?
אולי הקהל צועק משהו?
עכשיו כבר יש לנו מערכת תנאים בצורה של
הקוד שמעניין אתכם לערוך משויך לדמות הכדור, אז לחצו עליו כדי להיכנס לעורך הקוד הרצוי. הבלוק של "אם... אז... אחרת..." כבר מופיע שם, עליכם להוסיף לשם את הפעולות הרצויות במקום המתאים (תתעלמו מהבלוקים של "שדר מסר", נסביר עליהם בהמשך).
"אם... אז... אחרת..."
ננסה אותה: ערכו את משחק הכדורגל כך שאם הכדור נכנס לשער ישנה התלהבות כלשהי על המסך (ריקוד, מנגינה, מה שאתם רוצים).
אם הכדור לא נכנס לשער - חשבו מה אתם רוצים שיקרה.
פתחו את התרגיל "בעיטה בכדור, אם אחרת..."
שימו לב:
תרגיל בעיטה בכדור אם אחרת...
פתרון בעיטה בכדור אם אחרת...
הצלחתם? הסתבכתם קצת? יש לנו שיטה שיכולה לעזור בכל מקרה, גם כשתהיו מתכנתים ומתכנתות מקצועיים: תרשים זרימה! שימו לב:
אולי זה נראה מיותר, אבל זה בהחלט עוזר ברגע שמתחילים לכתוב תנאים מורכבים יותר, ובוודאי כשמתחילים לכתוב משחק שלם.
חושבים שזה קטן עליכם? נסו!
השלימו את תרשים הזרימה כפי שנראה לכם.
הכדור נכנס?
כן
לא
החלף רקע
שנה תלבושת
נגן מוזיקה
נגן מוזיקה
כפי שאולי שמתם לב, יש הרבה דרכים שונות לכתוב תרשים זרימה שבסופו של דבר יבצע את אותו הדבר. היתרון הגדול בתרשים הזרימה הוא התכנון של האלגוריתם, שבסופו של דבר נכתוב בשפת התכנות - ובמקרה שלנו, סקראץ'.
תרשים זרימה בנוי חלקית של אבן נייר ומספריים
כן
לא
התחל
האם הסכום זוגי?
ניצחון!
הפסד
אמור בקול: "זוג או פרד" והכרז "אני זוג"
הצג את כף ידך עם בין 1 ל-5 אצבעות מושטות
חשב את סכום האצבעות המושטות שלך ושל בן זוגך
עד כה ראינו איך משתמשים בתנאים שונים, אבל כל תנאי בפני עצמו היה פשוט (לדוגמה: "אם הכדור נוגע בשער"). אבל פעמים רבות נרצה לבדוק משהו מורכב יותר. נזכר שוב במשחק בו דמות השחקן אוספת חפצים כלשהם.
הבנו שקיים תנאי במשחק -
"אם הדמות נוגעת בחפץ, הוסף עוד חפץ אחד לשחקן".
אבל במקרה שהשחקן אסף 10 חפצים, צריך כבר לקרות משהו אחר. אז התנאי שלנו כבר צריך להיראות בערך כך:
"אם דמות השחקן נוגעת בחפץ וגם יש לשחקן 10 חפצים - הבהב את סרגל החפצים / סיים את המשחק בהצלחה (תלוי באיזה משחק מדברים)".
10
נתרגל את זה. חשבו על משחק קוביות. במשחק שלנו השחקן מטיל שתי קוביות.
נשפר את המשחק. ערכו את המשחק כך שהשחקן ינצח רק במקרה שבו הסכום הוא גבוה מ-7, וגם הקוביות מראות מספרים שונים (כלומר, אין "דאבל").
קבעו מה יקרה במשחק במקרה של ניצחון.
מחפשים איך אומרים לסקראץ' לבדוק "וגם"?
חפשו זאת תחת הבלוקים שנקראים "מפעילים".
שימו לב:
הקוד שבו אתם צריכים לגעת הוא זה שמשויך לבמה, אז לחצו על הבמה כדי להתחיל לערוך אותו.
דאבל
סכום הקוביות מתחת ל-7
סכום הקוביות גבוה מ-7
פיתחו את משחק הקוביות
פתרון משחק הקוביות
אז מה היה לנו?
הבנו שתנאים הם בסיס לאלגוריתם של משחק,
וראינו שיש כל מיני סוגי תנאים -
התנסינו גם בתנאים מורכבים -
"אם... או... וגם...".
תנאים מורכבים מבצעים בדיקה של כמה דברים שונים כחלק מפעולת בדיקה אחת.