מחלקת Card (ללא get) מייצגת קלף בארבעה צבעים ו-1..9. שלושה סעיפים בונים מלמטה למעלה: compareTo לפי חוזק, מחלקת Deck שעוקפת את היעדר ה-get באמצעות קלפי-בדיקה חדשים, ופעולת game הבונה עליהן משחק שלם.
מחלקת Card (ללא get) מייצגת קלף בארבעה צבעים ו-1..9. שלושה סעיפים בונים מלמטה למעלה: compareTo לפי חוזק, מחלקת Deck שעוקפת את היעדר ה-get באמצעות קלפי-בדיקה חדשים, ופעולת game הבונה עליהן משחק שלם.
public class Card
{
private char color;
private int digit;
public Card(char c, int d)
{
this.color = c;
this.digit = d;
}
}
קלף c1 נחשב "חזק יותר" מקלף c2 אם המספר שרשום על הקלף c1 גדול מהמספר שרשום על הקלף c2. אם שני המספרים זהים יש להשוות צבעים לפי הסדר הבא: אדום (הכי חלש), ירוק, כחול, צהוב (הכי חזק). כתבו במחלקה Card פעולה compareTo. הפעולה תקבל הפניה לעצם other מטיפוס Card. אם הקלף שמפעיל את הפעולה (this) "חזק יותר" מהקלף שמתקבל כפרמטר (other), הפעולה תחזיר 1-. אם הקלף שמפעיל את הפעולה (this) "חלש יותר" מהקלף שמתקבל כפרמטר (other), הפעולה תחזיר 1. אם הקלף שמפעיל את הפעולה (this) זהה לקלף שמתקבל כפרמטר (other), הפעולה תחזיר 0.
public int CompareTo(Card other)
למשחק Eka הכללים הבאים: שני שחקנים לוקחים כל אחד קלף מראש החפיסה המשותפת. שחקן שהקלף שלו "חזק יותר" מוסיף את זוג הקלפים לחפיסה שלו. אם אחד מהשחקנים צבר את כל הקלפים מצבע כלשהו, הוא ניצח במשחק. אם כל הקלפים חולקו ואין מנצח — מכריזים על תיקו. כתבו פעולה חיצונית המקבלת חפיסת קלפים מלאה (הכוללת את כל 36 הקלפים) ומדמה את תהליך המשחק. הפעולה תדפיס הודעה על תוצאת המשחק — אחת מההודעות הבאות: "הראשון מנצח", "השני מנצח" או "תיקו".
public static void Game(Deck d)
כתבו את המחלקה Deck: הגדירו תכונה או תכונות של המחלקה וממשו את כל הפעולות שהוגדרו בה: פעולה בונה המייצרת חפיסה ריקה — public Deck(); פעולה המקבלת קלף c ומוסיפה אותו לחפיסה — public void addCard(Card c); פעולה המוציאה קלף מהחפיסה ומחזירה אותו, אם החפיסה ריקה הפעולה תחזיר null — public Card drawCard(); פעולה המקבלת קלף c ובודקת אם הוא קיים בחפיסה, אם כן הפעולה תחזיר true ולא — false — public boolean exist(Card c); פעולה המקבלת צבע color ובודקת אם בחפיסה יש את כל הקלפים מאותו צבע, אם כן true, ולא — false — public boolean isFull(char color). הערה: שימו לב שבמחלקה Card אין פעולות get ואי אפשר להוסיף אותן!
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.