פרויקט סיכום > שלבי הפרויקט > שלב ב

שלב ב – זרימה, פונקציות

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

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

כתבו פונקציה שמקבלת מספר, המייצג את "מצבו" של התא, ומחזירה תו שייצג "מצב" זה, על פי החוקיות הבאה:
מצב: התא ריק (או לא נבדק) מספר: 0 תו: .
מצב: התא מכיל צוללת מספר: 1 תו: 0

מצב: התא "נורה" והתוצאה היתה החמצה מספר: 2 תו: *

מצב: התא "נורה" והתוצאה היתה פגיעה מספר: 3 תו: @

מצב: התא "נורה" והתוצאה היתה השמדה מספר: 4 תו: #

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

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

לחץ לקבלת רמז:

 
עמוד ראשי
הקדמה
התקנה
שימוש
התחלה
פונקציות
זרימת התכנית
טיפוסי נתונים
זרימת התכנית - מתקדם
תכנות מונחה עצמים
מודולים
כללי
שלבי הפרויקט
דוגמאות הרצה