קצת לפני שנעבור לטפל באספקטים המתקדמים יותר של מימוש המשחק
עצמו, ננצל דרישות מסוימות של התכנית כדי לתת לכם הזדמנות להתנסות בעוד
כמה "פינות" של תכנות בשפת פיתון.
בתחילת הרצת
התכנית שלנו, נרצה לשאול את השחקן האם הוא רוצה להריץ את התכנית כשרת
או כלקוח (על שרת-לקוח נלמד בפרק אחר ואת הדוגמה
לכך נראה בשלב יא
). לשם כך אנו
רוצים להכליל את פונקצית הקלט שכתבנו, ולממש עבורה בדיקות אימות נתונים
מתקדמות. עד כה השתמשנו בבדיקות פשוטות, כדוגמת – האם הקלט הוא מספר?
אבל אנו יכולים להשתמש באותה פונקציה שכתבנו כדי לקבל (ולאמת) קלט
מורכב יותר. נתחיל, כאמור, בקבלת קלט מהמשתמש לגבי שרת או לקוח. לשם כך
עלינו לממש פונקצית בדיקה משלנו, ולהעבירה לפונקצית my_input שכתבנו כבר בשלב
ד
.
ממשו פונקצית בדיקה בשם is_server_client שמקבלת משתנה ובודקת האם הוא המחרוזת
“s” (עבור server) או המחרוזת “c” (עבור
client). כל ערך אחר צריך לגרום לזריקת
שגיאה.
רמז: בזריקת שגיאה אנו זורקים שני ערכים
– הראשון הוא השגיאה עצמה (הערך ValueError במקרה שלנו) והשני
הוא מחרוזת המתארת את השגיאה.
קלט נוסף שנידרוש מהמשתמש בכל תור במשחק הוא קואורדינטות של
"יריה". כמובן שגם עבור קלט זה נרצה לכתוב בדיקת אימות נתונים. לצורך
הפשטות, אנו מניחים שהקלט מהשחקן מורכב ממספר השורה ומספר העמודה,
מופרדים זה מזה ברווח אחד בדיוק.
ממשו פונקצית אימות לקלט של קואורדינטות מהשחקן. הפונקציה
תקבל, בנוסף לארגומנט שמכיל את הקלט, ארגומנט בשם board_size שמכיל את גודל הלוח (לבדיקת חוקיות
הקואורדינטות).
רמז: פונקציה המחלקה split של מחלקת המחרוזת
יכולה לשמש לחלוקת מחרוזת לערכים לפי תו מפריד. הפונקציה אינה מחזירה
ערך בודד כי אם רשומה ועל כן יש להשתמש בפורמט של
הצבה מרובה.