Professional Documents
Culture Documents
Hades
Hades
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תיווצר מפלצת חדשה (בהנחה שאתם מנסים להוסיף
מפלצת עם אותו שם)