הדפים שלנו

יום שני, 30 בנובמבר 2009

משחקים רבותי!

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

ובכן, גם אנו באראל לא הנחנו את החלום להיות מונח מיותם אי-שם, וכבר גמרנו עליו את החריש. אבל עוד נותרה השאלה האם ומתי זה יהפך מעשי. כיום, ישנם פלטפורמות רבות ומגוונות בהן אפשר ליצור משחקים. ישנם את המשחקים הכבדים שבאמת יושבים על מחשב ובדרך כלל מגייסים עוד רשת נרחבת של שחקנים למשחק 'המונטי' (חפשו בויקיפדיה) וישנם משחקי קונסולה שבדרך כלל נסמכים על ויזואליזציה מרהיבה וססגונית, אבל ישנם גם משחקים צנועים יותר כמו כאלה לפלאפונים (מבוססי ג'אווה או פלאש לייט וכדו') או משחקי פלאש לאינטרנט.

בעבר עלתה מחשבה על משחק סימולציה פיקנטי לפלאפון וכבר התחלתי מעלעל במדריכים על ג'אווה מיקרו-אדישן אך לאחרונה התחלתי להתעניין במשחקי פלאש דווקא. וגם יש איזה יישומון שאמור להצטרף לדיסק של חנוכה... ובכן, התחלתי לעבור על טוטים (Tuts קיצור של Tutorials) בנושא ודי מהר הגעתי לספר של ActionScript 3 השפה שמשמשת לתכנות פלאש. בסופו של דבר הסתבר לי שהספר במלואו ועוד כמה מדריכים ענפים מופיעים בקובץ העזרה של פלאש עצמה. חיטוט מיותר, לא נורא. היפה בפלאש הוא שהכל שם בנוי בצורת עצמים ומחלקות, כל מחלקה שם מגדירה שלושה דברים - מאפיינים (ממומש כמשתנים או קבועים), מתודות (לעיתים זוכה לשם 'פונקציות'), ואירועים (זה גם מנגנון חשוב מאוד בשפה שעדיין לא ירדתי לסוף עמקו). למי שמתעניין אני מצרף כאן כמה פטפוטים לא מחייבים בכלל (ואמינותם עוד מוטלת בספק) על תכנות מונחה עצמים. אם תהיו ממש טובים - אני אצרף נסיונות שלי בפלאש וכמה הסברים.

**

תכנות מונחה עצמים (באנגלית Object Oriented Programming‏ או בקיצור OOP) זו שיטת תכנות (התפתחה בעיקר בשפת ++C) שבה אנו יוצרים 'מודל' בעל תכונות מסויימות וממנו אנו מייצרים הרבה פרטים עם אותם תכונות בסיסיות. למשל: מודל מכונית, יש לו 4 גלגלים, יש לו מושבים ומנוע ורדיו.. אפשר לייצר הרבה מכוניות, כמו צ'יטה ויוספה.. בתכנות מונחה עצמים אנו מתכנתים פעם אחת את התכונות של מכונית, ולאחר מכן נותנים הוראה ליצור כמה מכוניות על פי אותו מודל קבוע.

*
לכל המכוניות יש 4 גלגלים ומנוע ומושבים, אבל כל מכונית היא בצבע אחר ובגודל אחר ושנת ייצור אחרת. אז כאשר אנו יוצרים מכונית (על פי מודל מכונית שהגדרנו מראש) אנו צריכים לציין מה הצבע שלה, מה הגודל שלה ומה שנת הייצור.
בתכנות מונחה עצמים מכנים את הגדרת המודל בשם 'מחלקה' (באנגלית class) למשל מחלקת מכונית,‎‏ ואת הפרטים בשם 'אובייקטים' (‏objects‏) אז מעכשיו נדבר רק במחלקות ואובייקטים. נזכור - מחלקה זו הגדרה כללית ואובייקט זה מקרה פרטי.

*
תחשבו למשל על משחק אסטרטגיה. על המסך נמצאים עשרות חיילים. כל החיילים מתנהגים אותו דבר, עובדים לפי אותם דפוסים, אבל לכל חייל יש מצב חיים משלו, יש מיקום משלו על המסך (כן, גם מיקום הוא תכונה שמבדילה חייל מחבירו) וגם עמידה משלו מתוך רצף של עמידות (יש חייל שכרגע הוא במצב לחימה, אחר במצב מנוחה וכו').
כאשר אנו מתכנתים משחק אסטרטגיה נצטרך פעם אחת לתכנת מחלקת חייל, להגדיר איך חייל מתנהג, איך הוא נראה, מה קורה כאשר מתקרבים אליו, מה קורה כאשר נותנים לו פקודות וכו' אבל גם אחרי כל זה - עדיין זה לא אומר שיהיה במשחק שלנו חייל, עכשיו צריך ליצור אובייקטים (וזה החלק הקל!). נייצר נגיד 10 אובייקטים של מחלקת חייל, כלומר 10 חיילים, כל חייל נמקם במיקום אחר במסך ונתן למשחק להתנהל. כאשר תהיה התקפה למשל - חייל מסויים שיהיה קרוב לאויב עשוי לזוז ממקומו ולצאת לקראת האויב, ושאר החיילים יישארו במקום. אותו חייל יתנהג כך בגלל שכשהגדרנו מחלקת חייל שמנו לו את הקוד הזה במח, כלומר לכל החיילים בשווה. עכשיו רק הוא יוצא להתקפה למרות שהקוד נמצא אצל כולם בשווה.

*
עוד כמה מושגים כשמדברים על עצמים: עצמים מולידים עצמים, עצמים גם יכולים להשתייך לעצמים אחרים, יש כינויי קירבה של אח-הורה-ילד. למשל חייל יורה אז עף מהרובה שלו כדור ונע לכיוון האוייב. הכדור, גם לו יש קוד משלו איך הוא מתנהג וגם הוא מתנהג על פי דפוס קבוע כמו כל הכדורים, כלומר יש מחלקת כדור ויש על המסך כמה כדורים שכולם נענים לחוקי המחלקה. כאשר החייל יורה הוא בעצם מייצר אובייקט כדור על פי הגדרת המחלקה, אז אנו אומרים שהחייל הוא ההורה של הכדור והכדור הוא הילד של החייל. אם החייל יורה פעמיים, אז שני הכדורים הם אחים, כאשר הכדור הראשון שנורה הוא אח גדול.. פשוט, לא? יש לזה כל מיני שימושים בתכנות.

יאללה, אם מישהו פה מתעניין ויהיו תגובות - אתן כמה שיעורים פשוטים בתכנות לפלאש.

נ.ב. בימים אלו צ'יטה חוגגת שנה אצל בעליה החדשים. מה שאומר שגם נגמר לנו הביטוח והטסט וכל הקישקושים האלה, כל תרומה תתקבל בברכה :)

תגובה 1: