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

שלב י – הוספת תקשורת

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

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

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

ממשו מחלקת שחקן בעלת המאפיינים הבאים:
Sock המכיל את ה socket המחבר את השחקן לשחקן אחר
Board_size, subs_level בהם נתקלנו כבר בשלב ו.
My_board, other_board הלוח של השחקן עצמו והלוח של השחקן היריב. הניחו שלתכנית עצמה מותר להכיר את לוח השחקן היריב במלואו, והיא אחראית להציג לשחקן את לוח היריב רק כפי שהוא מורשה לראותו.

המחלקה חייבת לממש את המתודות הבאות:
RunServer המקבלת כארגומנטים את כתובת ה-IP ומספר ה port להם השחקן-שרת צריך להקשיב כשהוא מחכה לשחקנים נוספים.
RunClient המקבלת כארגומנטים את כתובת ה-IP ומספר ה port אליהם השחקן-לקוח צריך להתחבר כדי לשחק מול השחקן שרת.

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

הפתרון לשאלה זו הינו ארוך למדי. בסעיף פתרון בית ספר ניתן להוריד את הקוד לשאלה זו.

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