You are on page 1of 3

‫תרגיל ‪3‬‬

‫‪Operators Overloading‬‬
‫חובה‪:‬‬
‫● הגשה בזוגות בלבד – רק אחד צריך להגיש – השני צריך לרשום עם מי הוגש‬
‫● התוכנית חייבת להתקמפל‬
‫● לרשום את השמות שלכם ואת תעודות הזהות בראש כל קובץ בעזרת ‪comments‬‬

‫דגשים‪:‬‬
‫לא לשכוח לבצע בדיקות ל ‪ null‬כשצריך‬ ‫●‬
‫לא לשכוח לשחרר זיכרון לאחר שסיימתם עם הקצאת זיכרון או קובץ פתוח‬ ‫●‬
‫לתת שמות משמעותיים למשתנים‬ ‫●‬
‫ניתן להוסיף מחלקות‪/‬פונקציות לפי הצורך‬ ‫●‬
‫להתמודד עם שגיאות‪ ,‬לא לזרוק מהתוכנית שלא לצורך (לא מדובר על הקצאות שבמקרה זה‬ ‫●‬
‫חייב לזרוק)‬
‫הערות (‪ )Comments‬מעל כל פונקציה המתארות מה היא עושה‬ ‫●‬

‫מטרת התרגיל‪:‬‬
‫בתרגיל זה תתרגלו את הנושא העיקרי שלמדתם‪.Operators Overloading ,‬‬
‫יהיה עליכם לבנות מחלקות ואובייקטים על פי ההנחיות מטה‪ ,‬אנא וודאו כי הם עומדים בדרישות!‬
‫עליכם לכתוב את המבנה הבא בקוד‪:‬‬

‫חשוב‪ :‬הוספת ‪ Constructors, Destructors, Getters and Setters‬היא לגמרי בידיים שלכם ובהתאם‬
‫לצורך‪.‬‬
‫‪Hades‬‬
‫סיפור רקע‪:‬‬
‫נשמתכם נכלאה בגיהנום (למה חשבתם אתם כל כך סובלים כרגע?) והדרך היחידה לצאת משם היא‬
‫לעבור דרך שבעת מדורי הגיהנום!!!! *קולות של ברקים מתחת לאדמה כי אתם בגיהנום ויש רק לבה‬
‫בלי עננים*‪.‬‬
‫לשם כך אתם צריכים לעבור את המבוכים של כל מדור גיהנום‪ ,‬האם תצליחו במשימה? האם תמצאו‬
‫את גופכם חזרה ותשובו להיות בין החיים?‪....‬‬
‫כל מדור הוא מכיל בתוכו חדרים ובכל חדר ישנם חפצים ואוייבים אשר ינסו לעצור אתכם מלהגיע אל‬
‫פני העולם האמיתי או אפילו גן עדן!!‬

‫הרעיון‪:‬‬
‫בתחום המשחקים ‪ Roguelike -‬אלו משחקים שהדבר שהכי מאפיין אותם זה המפה מתחלפת כל פעם‬
‫שאתם משחקים במשחק‪ .‬כך נוצר מצב שאפשר לשחק את המשחק המון המון פעמים ובכל פעם לקבל‬
‫חוויה שונה לגמרי‪ .‬רעיון זה מגיע מתחום משחקי מבוכים ודרקונים‪ ,‬אשר מבוססים על סיפורים‬
‫מומצאים כל פעם על ידי המנחה שמעביר אותם‪.‬‬
‫בשנת ‪ 1980‬הוצג לראשונה הרעיון של משחק ‪ Roguelike‬במחשב‪:‬‬

‫‪https://en.wikipedia.org/wiki/Roguelike‬‬
‫קווים מנחים‪:‬‬
‫● אין תפריט‬
‫● מחלקת ‪ Map‬מנהלת רשימה מקושרת של ‪Rooms‬‬
‫● החפצים (‪ )items‬ב ‪ Room‬יהיו מערך‬
‫● כל חדר גם צריך להיות מחובר לחדר שקדם לו (הסתכלו בתמונה למעלה)‪ ,‬הסולמיות (‪ )#‬הן‬
‫שבילים בין החדרים השונים‬
‫● מלאו את רשימת החדרים ב ‪ Game‬בתחילת התוכנית‬
‫● לא ניתן להוסיף חדר איפה שיש חדר‪ ,‬הכוונה היא שלכל חדר יש ‪ 4‬כיווני אוויר‪ ,‬ולכן לא יכול‬
‫להיות שיש שני חדרים שהם מצפון לחדר מסויים‪( .‬בהמשך תבינו למה זה יכול לקרות)‬
‫● שימו ♥ כי קיימת רשימת חדרים שצריך למלא מבעוד מועד ולאחר מכן למשוך ממנה חדרים‬
‫לפי דרישה (‪)roomsData‬‬
‫● כשיוצרים את המפה‪ ,‬אפשר ליצור חדר שנקרא ‪( START‬ברירת מחדל) כדי שתוכלו ישר להוסיף‬
‫חדר‬
‫● שימו לב שאתם משכפלים חדרים מה ‪ DATA‬ל ‪ ,MAP‬אחרת כל שינוי שתעשו בחדר משפיע על‬
‫כל המפות‬
‫דרישות‪:‬‬
‫כל מחלקה בקובץ ‪ CPP‬ו ‪ h‬משלה‬ ‫●‬
‫מטרת הקוד שלכם הוא ליצור מפות על ידי הוספת חדרים למפה מתוך ה ‪.roomsData‬‬ ‫●‬
‫מלאו את רשימת החדרים (‪ )roomsData‬בכ ‪ 10‬חדרים לפחות‪.‬‬ ‫●‬
‫יש לאפשר הדפסה של תכולת החדר‪ ,‬תדפיס את כל החפצים והמפלצות (>>‪ operator‬ל‬ ‫●‬
‫‪)Room‬‬
‫בכל פעם שמוסיפים מפה‪:‬‬ ‫●‬
‫○ יש לבודק שלא קיימת מפה בשם דומה (להדפיס שגיאה אם כן)‬
‫○ ניתן לחבר מפות (משרשרים את החדרים שלהם) על ידי =‪ operator+‬וגם לאפשר ‪operator+‬‬
‫שרשור מפות יהיה לפי ‪ currentRoom‬של אותה מפה‪ ,‬הוא יחפש לפי הסדר של המצביעים‬
‫איזה מהם הוא ‪ NULL‬ויחבר אליו את המפה שנוספה‪.‬‬
‫○ ניתן לדרוס מפות על ידי השמה =‪operator‬‬
‫בכל פעם שמוסיפים חדר‪:‬‬ ‫●‬
‫○ אם החדר שאתם מנסים להוסיף קיים כבר במפה אז אתם צריכים להתחבר אליו מאותו חדר‬
‫שאתם נמצאים בו‪ ,‬ז"א שלא יכול להיות אותו חדר פעמיים‬
‫○ עליכם לבדוק כי לא קיים חדר באותו צד שאתם מנסים להוסיף‬
‫○ אם החדר מוקף בחדרים‪ ,‬עליכם לרשום שגיאה למסך‬
‫בכל פעם שמוסיפים חפץ (‪ )Item‬לחדר‪:‬‬ ‫●‬
‫○ יש לאפשר ב =‪operator+‬‬
‫○ יש לאפשר יצירה של חפצים וחיבורם עם =‪operator+, operator‬‬
‫○ יש לאפשר העלאה של ‪ rarity‬על ידי ‪( ++operator‬משני הכיוונים) ב ‪item‬‬
‫○ חיבור חפצים יעלה את ה ‪ ,rarity‬אך לא יותר מ ‪Legendery‬‬
‫○ אם כבר קיים ‪ item Legendary‬עם אותו שם‪ ,‬נוסף ‪ item‬חדש לרשימה עם ‪rarity common‬‬
‫(בהנחה שאתם מנסים להוסיף חפץ עם אותו שם)‬
‫בכל פעם שמוסיפים אויב (‪ )enemy‬לחדר‪:‬‬ ‫●‬
‫○ יש להשתמש ב =‪operator+‬‬
‫○ יש לאפשר להעלות את הרמה של המפלצת על ידי ‪++monster‬‬
‫○ אם קיימת מפלצת עם אותו שם עליכם להעלות את אותה מפלצת רמה (‪)+1‬‬
‫○ אם הרמה של המפלצת הגיע ל ‪ ,5‬תיווצר מפלצת חדשה (בהנחה שאתם מנסים להוסיף‬
‫מפלצת עם אותו שם)‬

You might also like