-
Notifications
You must be signed in to change notification settings - Fork 0
UpTheShipCreek/Creatures
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Γεώργιος Παναγιωτόπουλος 1115201700113 Kληση του προγραμματος: $ make $ ./output [# of creatures of the society] [# of actions] [life of the creatures] [good_thrsh] [bad_thrsh] Παραδειγμα κλησης: $ make $ ./output 5 20 5 5 1 Για την υλοποιηση των συναρτησεων creatures, εχω χρησιμοποιησει μια δομη κυκλικης λιστας* (cyList) και μια συναρτηση που επιστρεφει random χαρακτηρες (randomstring) Η cyList, χρησιμοποιει template για το type, ετσι ωστε να ειναι generic (αν και στην προκειμενη περιπτωση, το type ειναι το creature) και εμπεριεχει συναρτησεις για add και add_in_position, traverse, get_data και index Τα creatures, εμπεριεχουν μια parent κλαση Creature, δυο αλλες derived κλασεις για τα good και bad Creatures και επιπλεον μια κλαση για τις κοινωνιες των creatures Τα Creatures ειναι υπευθυνα για τις καθολικες λειτουργιες και ελεγχους των creatures (clone, bless, beat, is_a_zombie) καθως και για μερικες αλλες χρησιμες λειτουργιες που οι οποιες ενδεχωμενως να μην χρησιμοποιουνται και ποτε μεσα στο προγραμμα (οπως το get_creature_name που επιστρεφει το ονομα του creature) Τα derived classes, εχουν τους επιπροσθετους ελεγχους για το αν ειναι good ή bad πλασματα (επιστρεφοντας απλως την bool μεταβλητη is_Good η οποια παιρνει την αντιστοιχη τιμη true/false κατα την δημιουργεια good ή bad πλασματος) Στην creature_Society, χρησιμοποιειται η δομη cyList για την αποθυκευση των creatures O constructor παιρνει ως ορισματα τον αριθμο (int) των θεσεων στην κοινωνια (N), καθως και την ζωη των πλασματων που θα την κατοικουνε(life) Στον constructor λοιπον γινονται N επαναληψεις για την τυχαια δημιουργεια καλων ή κακων πλασματων, στα οποια μετα την δημιουργεια τους και την δεσμευση μνημης μεσω new προστειθονται στην κοινωνια (cylist) ως pointers στην θεση μνημης που δεσμευσαμε για αυτα Ο destructor περναει απο ολες τις θεσεις της λιστας, οσο το creature_Society ειναι γεματο, και κανει delete τις δεσμευμενες θεσεις μνημης Η beat καλει την Creature.beat για την επιθυμητη θεση (η οποια μειωνει το life του creature κατα 1) Η bless καλει την Creature.bless για την επιθυμητη θεση, καθως και ελεγχοντας αν το creature ειναι ευρωστο, καλει την clone_next ή την clone_zombies για good και bad creatures αντιστοιχα Η clone_next, ελεγχει αν το creature ειναι στην τελευταια θεση της κοινωνιας. Αν δεν ειναι τοτε κανει delete την θεση μνημης του πλασματος που ειναι στην επομενη θεση, δεσμευει χωρο για ενα πλασμα με new και κανει clone το επιθυμητο πλασμα στον χωρο αυτο. Η clone_zombies λειτουργει με παρομοιο τροπο και διαφοροποιειται στο γεγονος οτι ψαχνει μεχρι το τελος της κοινωνιας για καποιο zombie, προκειμενου να το διαγραψει και να και να κλονοποιηθει στην θεση του. Η no_of_good απαριθμιζει τα καλα creatures, διαβαζοντας ολη την λιστα, κανοντας τον ελεγχο is a good creature && is not a zombie για τα creatures σε καθε θεση. Η no_of_zombies απαριθμιζει zombies, διαβαζοντας ολη την λιστα και κανοντας τον ελεγχο is a zombie για τα creatures σε καθε θεση. H print κανει τυπωνει ολες τις θεσεις μνημης των creatures, τα ονοματα τους, την ζωη τους, αν ειναι καλα και αν ειναι zombies *Η επιλογη της συγκεκριμενης δομης ηταν καπως αυθαιρετη. Αποφασησα να την υλοποιησω, καθως η υλοποιηση αυτη καθαυτη ειναι αλγοριθμικα πολυ απλη καθως και επειδη η απεικονηση μιας κοινωνιας ως κυκλο εμοιαζε καταλληλοτερη της απεικονηση της ως μια γραμμη (παρολο που ο τροπος που χρησιμοποιειται η cyList απο την creature_Society ουσιαστικα παραμπεμπει σε γραμμη/array)
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published