background image

εδώ διαχειρίζεται τα αντίστοιχα animations, οι θέσεις, η κίνηση και η τεχνητή νοημοσύνη του

αντιπάλου.

Στη συνέχεια υπάρχει η κλάση SceneObject (Αντικείμενα Σκηνής). Σε αυτή φορτώνονται

όλα τα αντικείμενα που αναφέρθηκαν στην προηγούμενη ενότητα, όπως τα αστέρια ζωής, οι

λάμπες και οι πυρσοί, καθώς και οι θέσεις τους και ο τρόπος ανανέωσης αυτών μέσα στη σκηνή.

Τέλος, υπάρχει η κλάση AudioManager (Διαχειριστής Ήχου), στην οποία φορτώνονται όλοι

οι ήχοι που χρησιμοποιούνται κατά τη διάρκεια του παιχνιδιού. Όλες οι παραπάνω κλάσεις αξιο-

ποιούνται εντός του παιχνιδιού για να διευκολύνουν την υλοποίηση, να αυξήσουν τη διαχειρι-

σιμότητα του κώδικα και να επιτρέψουν την εύκολη επέκταση της λειτουργικότητας.

Για την υλοποίηση όλων των παραπάνω απαιτείται η χρήση ορισμένων components, όπως

αυτά που περιγράφηκαν αναλυτικά στο προηγούμενο κεφάλαιο και αποτελούν μέρος του συ-

στήματος ECS (Entity–Component–System).

Αρχικά, για τον παίκτη (Player) απαιτείται ένα SpriteComponent, το οποίο περιέ-

χει τα animations των καταστάσεων idle, run, jump και hit. Επιπλέον, απαιτείται ένα

TransformComponent, το οποίο καθορίζει τη θέση, την κλίμακα και τον προσανατολισμό του

χαρακτήρα μέσα στη σκηνή.

Παράλληλα, χρησιμοποιείται ένα BoxColliderComponent, μέσω του οποίου είναι δυνατή η

ανίχνευση συγκρούσεων, όπως για παράδειγμα η επαφή του χαρακτήρα με έναν αντίπαλο ή με

κάποιο άλλο αντικείμενο της σκηνής (π.χ. ένα αστέρι ζωής).

Τέλος, για την απεικόνιση της μπάρας ζωής του παίκτη χρησιμοποιούνται επιπλέον ένα

SpriteComponent, ένα TransformComponent και ένα TextComponent.

Για τον αντίπαλο (Enemy) χρησιμοποιείται αντίστοιχη δομή components. Συγκεκρι-

μένα, απαιτούνται SpriteComponent και TransformComponent για την αναπαράσταση και

τη θέση του στη σκηνή, καθώς και BoxColliderComponent για τον έλεγχο συγκρούσεων.

Επιπλέον, καθώς και οι αντίπαλοι διαθέτουν μπάρα ζωής, χρησιμοποιείται και εδώ συνδυασμός

TransformComponent, SpriteComponent και TextComponent για την απεικόνισή της.

Επιπλέον, για τα αντικείμενα της σκηνής απαιτούνται SpriteComponent και

TransformComponent, τα οποία χρησιμοποιούνται για την απεικόνιση και την τοποθέ-

τησή τους στον χώρο. Στην περίπτωση των αστεριών ζωής απαιτείται επιπρόσθετα και

BoxColliderComponent, ώστε να είναι δυνατή η ανίχνευση σύγκρουσης με τον παίκτη και η

ενεργοποίηση του μηχανισμού συλλογής τους.

Αντίστοιχα, για τα αντικείμενα φωτισμού, όπως οι λάμπες και οι πυρσοί, εκτός από

SpriteComponent και TransformComponent, χρησιμοποιείται και LightComponent, το οποίο

είναι υπεύθυνο για την προσομοίωση της φωτεινής πηγής και την οπτική επίδραση που αυτή

προκαλεί στο περιβάλλον της σκηνής.

Τέλος, υπάρχουν και τα αντικείμενα διεπαφής με τον χρήστη στα δύο μενού του παιχνι-

διού. Σε αυτή την περίπτωση χρησιμοποιούνται ButtonComponent, τα οποία, όπως έχει ήδη

αναφερθεί στο προηγούμενο κεφάλαιο, διαχειρίζονται τόσο την οπτική αναπαράσταση και τα

animations των κουμπιών όσο και τη θέση και το μέγεθός τους μέσα στη διεπαφή χρήστη.

56