Skip to content

Latest commit

 

History

History
150 lines (109 loc) · 6.06 KB

File metadata and controls

150 lines (109 loc) · 6.06 KB

◆ Θεοδόσης Παιδάκης Α.Μ.: 1115201500118

◆ Δημήτρης Παπαχρήστου Α.Μ.: 1115201500124

◆ Εντολές μεταγλώττισης και εκτέλεσης: $ make (inside project dir) $ cd bin $ ./runner $ To recompile: $ make clean

◆ Σειρά υλοποίησης του κώδικά μας:

  1. Υλοποίηση των κλάσεων που περιγράφει η εκφώνηση με τις εξής ιεραρχίες:

▪ Item :

◦ Weapon

◦ Armor

◦ StrengthPotion

◦ DexterityPotion

◦ AgilityPotion

▪ Spell:

◦ IceSpell

◦ FireSpell

◦ LightingSpell

▪ Living:

◦ Hero:

• Warrior

• Sorcerer

• Paladin

◦ Monster:

• Dragon

• Exoskeleton

• Spirit

▪ Grid

▪ Market

  1. Αρχικά, δημιουργήσαμε το μενού, και κάθε επιλογή που προσθέταμε σε αυτό, την υλοποιούσαμε στον κώδικα μας. Οι επιλογές όλων των μενού του παιχνιδιού, γίνονται επιλέγοντας ο παίχτης το κατάλληλο νούμερο.

  2. Στην αρχή του παιχνιδιού, ο παίχτης δημιουργεί 1- ήρωες, χωρίς την δυνατότητα να δημιουργήσει παραπάνω ήρωες στην συνέχεια του παιχνιδιού. Ο κάθε τύπος ήρωα (Warrior,..κλπ), αρχικοποιείται με συγκεκριμένες προκαθορισμένες τιμές.

  3. Οι θέσεις του χάρτη αρχικά δημιουργούνταν τυχαία, αλλα αυτό παρουσίαζε προβλήματα στο παιχνίδι, μιας και δεν εξασφαλιζόταν ότι δεν θα είχαμε κλειστό μονοπάτι. Οπότε, ο χάρτης πλέον ειναι σταθερός και προκαθορισμένος απο εμάς. Ο τύπος της κάθε θέσης (enum square_type) , αρχικοποιείται από το αρχείο map.txt. Οι ήρωες πάντα στην αρχή του παιχνιδιού, θα ξεκινούν από την θέση [1 , 1]. c = Common , m = Market , n = nonAccessible

  4. Έπειτα, δημιουργήσαμε το market. Για κάθε Weapon, Armor, Potions και Spells, δημιουργήσαμε structures τα οποία περιέχουν τα χαρακτηριστικά που έχει το κάθε Item ή Spell. Έχουμε ακόμα μία λίστα για κάθε ένα απο αυτά τα Items και Spells, η οποία αποτελείται απο Nodes του αντίστοιχου structure. Οι τιμές αυτών δίνονται από τα αντίστοιχα αρχεία .txt.

  5. Κάθε ήρωας διαθέτει δικό του Inventory και δικό του σύνολο από Spells που έχει αγοράσει, τα οποία αποθηκεύονται σε vectors. Συνεπώς κάθε ήρωας έχει και δικο του ξεχωριστό ποσό χρημάτων για αγορές και πωλήσεις από το market. Επίσης, ένας ήρωας δεν μπορεί να αγοράσει πάνω από μία φορά το ίδιο αντικείμενο, αν αυτό υπάρχει ήδη στο inventory του.

  6. Υλοποίηση όλων των επιλογών των ηρώων (move, checkInventory, buy, sell, equip, use, display stats-map(etc), show market ,quit). Η επιλογή των items και των spells στο market γίνεται με βάση την αρίθμηση τους, ενώ για την επιλογή κάποιου owned item/spell ή ήρωα ή τέρατος πρέπει να γράψουμε ακρίβως το αντίστοιχο όνομα (case sensitive).

  7. Κάθε φορά που ο παίχτης μεταφέρεται σε ένα common position, υπάρχει 45% πιθανότητα να ξυπνήσει καποια τέρατα. Αν γίνει αυτό, τότε μεταφερόμαστε σε κατάσταση μάχης. (Αν ο παίχτης δεν έχει προλάβει να αγοράσει κάποιο όπλο και να το κάνει equip, τότε αναγκάζεται να πολεμήσει με τις γροθιές του, οι οποίες προκαλούν μειωμένο damage). Υπάρχει αντίστοιχο μενού επιλογών μάχης με το κεντρικό του παιχνιδιού. Ο αριθμός των τεράτων κυμαίνεται τυχαία από 1 μέχρι τον αριθμό των δημιουργηθέντων ηρώων, τα οποία είναι διαφορετικού είδους μεταξύ τους, και είναι αντίστοιχου level με των ηρώων. Οι ήρωες επίλεγουν στόχο (γράφοντας το όνομα του τέρατος) ενώ τα τέρατα επιτίθενται σε κάποιον από τους ήρωες τυχαία. Εμφανίζονται σχετικά μηνύματα μετά από κάθε επίθεση. Η επιρροή των Spells διαρκεί 3 γύρους. Μετά από την νίκη μιας μάχης οι ήρωες παίρνουν 25 experience και 5 ρούβλια για κάθε τέρας που υπήρξε στην μάχη συν 10 ρούβλια επί το level του.

  8. Τα τέρατα προκαλούν ζημιά, η οποία αποτελείται απο το base damage, συν ενα εύρος ζημιάς από 0-15, που επιλέγεται τυχαία κάθε φορά.

  9. Όταν κάποιος ήρωας κάνει level up, αυξάνονται τα στατιστικά που αναφέρει η εκφώνηση. Τα τέρατα ανάλογα με το level τους, έχουν ανεβασμένα τα αμυντικά τους στατιστικά και το health power τους. Τέλος, το μέγιστο level είναι 5.