Skip to content

A classic text adventure game, implementing an advanced parser, for the purposes of an assignment for the AI course of a post-graduate program.

Notifications You must be signed in to change notification settings

kganitis/escape-from-ironhold

Repository files navigation

Escape-From-Ironhold

Για να εκτελέσετε το πρόγραμμα, τρέξτε το αρχείο main.py.

H εργασία μας αφορά στην υλοποίηση ενός κλασικού παραδοσιακού text-adventure παιχνιδιού, στο οποίο οι εντολές δίνονται από τον χρήστη σε φυσική γλώσσα με ελεύθερη μορφή.

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

Παράδειγμα μη ελεύθερης μορφής:

“Take key” -> Για την πραγματοποίηση αυτής της δράσης ο παίκτης θα πρέπει να πληκτρολογήσει επακριβώς αυτές τις δύο λέξεις, χωρίς να μπορεί να παραφράσει την εντολή του. Για να ταυτοποιήσει ο αναλυτής τη λέξη ‘key’ στο αντικείμενο «κλειδί» και να το μετακινήσει στην κατοχή του παίκτη, απαιτεί υποχρεωτικά να πληκτρολογηθούν αυτές οι δύο λέξεις.

Παράδειγμα ελεύθερης μορφής:

“Try to reach for the key that’s located on the shelf.” -> Η σύνταξη εντολών σε ελεύθερη μορφή επιτρέπει στον παίκτη να χρησιμοποιεί άρθρα, επίθετα, συνώνυμα, διαφορετικούς τρόπους σύνταξης και αυτό εξυπηρετεί στην πολύ μεγαλύτερη εμβύθισή του στον κόσμο του παιχνιδιού.

Η αναγνώριση εντολών σε ελεύθερη μορφή επιτυγχάνεται με την υλοποίηση ενός έξυπνου αναλυτή (parser), ο οποίος αναλύει την είσοδο του χρήστη, την μεταφράζει σε ενέργειες εντός του παιχνιδιού και εκτυπώνει τα αντίστοιχα αποτελέσματα.

Το συγκεκριμένο πεδίο του κλάδου της τεχνητής νοημοσύνης στο οποίο εμπίπτει η παρούσα εργασία είναι η επεξεργασία φυσικής γλώσσας (Natural Language Processing).

Στο παιχνίδι μας ο παίκτης βρίσκεται αιχμάλωτος στο κελί μιας φυλακής και καλείται να βρει τρόπο να αποδράσει, προσπαθώντας να ξεγλιστρήσει από τον φρουρό που παραφυλάει.

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

Για τον προγραμματισμό του παιχνιδιού χρησιμοποιήθηκε η γλώσσα Python 3.9.

Για τις σχεδιαστικές και προγραμματιστικές επιλογές, σε ότι αφορά στον κώδικα, μεγάλη βοήθεια αποτέλεσε το βιβλίο “The Inform Designer’s Manual” του Graham Nelson, το οποίο στην ουσία αποτελεί το documentation της γλώσσας προγραμματισμού Inform 6, μιας γλώσσας ειδικά σχεδιασμένης για την ανάπτυξη text adventure παιχνιδιών.

About

A classic text adventure game, implementing an advanced parser, for the purposes of an assignment for the AI course of a post-graduate program.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages