לסיום עיסוקנו בתחום תכנות מונחה עצמים, נממש את מחלקת הלוח של
משחק הצוללות שלנו. מימוש מחלקה זו אינו פשוט, והוא מערב יישום כל מה
שעסקנו בו עד כה – מחלקות התא והצוללת, ומרבית הפונקציות שנכתבו בשלבים
הקודמים.
ממשו מחלקת לוח בעלת המאפיינים הבאים: columnsמספר העמודות
בלוח rowsמספר השורות בלוח cellsרשימה של רשימות של
תאי הלוח – כפי שמומשה בשלבים הקודמים subsרשימה של אוביקטים מסוג צוללת, כפי
שמוקמו על גבי הלוח.
על המחלקה להכיל את המתודות
הבאות: AddSubהמקבלת כארגומנט רשימה של תאים, בודקת האם הם מגדירים צוללת
חוקית (כל התאים מחוברים, אין צוללות קרובות מדי), ומוסיפה את הצוללת
ללוח. Hitהמקבלת קואורדינטות של "יריה" בתא
מסוים, מעדכנת את הלוח בהתאם (שימו לב למקרה בו צוללת מושמדת – יש
לסמנה ככזו ולסמן את כל סביבותיה כ"החמצה") ומחזירה ערך 0 אם היתה
החמצה, 1 אם היתה פגיעה בצוללת, ו 2 אם צוללת
הושמדה. ToStringכפי שכבר מומשה בשלב ג
.
במקום רמז: נסו לממש את המחלקה על-פי ההגדרות להלן, ובדקו אותן
בעזרת תכנית קטנה שמתמשת במחלקות שמימשתם על מנת להריץ "סימולציה" של
משחק אמיתי. ניתן להריץ סימולציה מלאה, הכוללת הצבת צוללות על הלוח
ו"יריות" עד להשמדת כל הצוללות, תוך הצגה של מצב הלוח בכל שלב, בעזרת
כל המחלקות שמימשתם עד כה (בתוספת המחלקה שתממשו בשלב זה). זיכרו
שעדיין לא מימשנו את מחלקת השחקן, ולכן במקום לבקש קלט מהשחקן, השתמשו
בערכים קבועים בתכנית הבדיקה עצמה.