Skip to content

RPG game that runs in the terminal with turned base combat

Notifications You must be signed in to change notification settings

NikPnevmatikos/terminal-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

###################################################################################################### Στοιχεία:

Ονοματεπώνυμο: Νικόλαος Πνευματικός

Ονοματεπώνυμο: Μαρία Διαμάντη

######################################################################################################

Compile: make compile

Run: make run

######################################################################################################

To project ξεκινά στη main, όταν δημιουργείται ένα αντικείμενο grid και καλείται η συνάρτηση start, για να αρχίσει το παιχνίδι.

Αρχικά, στον constructor του Grid, δημιουργούνται τα Blocks του, με την χρήση του rand γίνονται είτε market, είτε block με μάχη, είτε common block, και στην συνέχεια, δημιουργούνται οι ήρωες(1-3 ανάλογα με την επιλογή του χρήστη).

Πολλές από τις συναρτήσεις στο project είναι αναδρομικές, καθώς και υπάρχει η χρήση της εντολής system("clear"). Με αυτόν τον τρόπο μπορέσαμε να προσομοιώσουμε κατά κάποιον τρόπο μια πιο ξεκάθαρη εικόνα του παιχνιδιού. Ένα παράδειγμα, του προηγουμένου αποτελεί ο τρόπος αναπαράστασης του χάρτη(grid). Σκεφτήκαμε να υλοποιήσουμε διαφορετικά τον τρόπο απεικόνισης του χάρτη. Αντί να τον εμφανίζει ο χρήστης κάθε φορά που θέλει να τον δει, θα βρίσκεται συνεχώς μπροστά του και από κάτω οι επιλογές που μπορεί να κάνει. Επίσης, στην κίνηση των ηρώων γίνεται διαγραφή της προηγούμενης εκτύπωσης του χάρτη και επανεκτυπώνεται με τις νέες συντεταγμένες των ηρώων, και λόγω της εντολής system("clear") δινεται η εντύπωση στον χρήστη ότι οι ήρωες μετακινήθηκαν.

Σε κάθε χρονική στιγμή, εμφανίζονται στον χρήστη οι επιλογές που έχει να κάνει (π.χ. να μετακινηθεί, να δει το inventory, κλπ.). Για να γίνει μια ενέργεια ο χρήστης πρέπει να πληκτρολογήσει το γράμμα δίπλα από κάθε επιλογή με μικρούς αγγλικούς χαρακτήρες. -Αν ο χρήστης επιλέξει να κινηθούν οι ήρωες, τότε οι συντεταγμένες των ηρώων θα αλλάξουν προς την επιθυμητή κατεύθυνση. -Αν ο χρήστης επιλέξει την ενέργεια check inventory, τότε θα μεταφερθεί στο ειδικό μενού που θα μπορεί να προσπελάσει όλα τα αντικείμενά του και θα μπορεί να κάνει μερικές αλλαγές (π.χ. να αλλάξει όπλο, πανοπλία, ή να χρησιμοποιήσει κάποιο φίλτρο). -Αν ο χρήστης επιλέξει την ενέργεια display stats, τότε θα μεταφερθεί σε ειδικό μενού και, αφού επιλέξει κάποιον ήρωα, θα του προβάλει τα stats του. -Τελευταία ενέργεια είναι η quit game, όπου ο χρήστης μπορεί να τερματίσει το παιχνίδι.

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

Αν, κατά την μετακίνηση των ηρώων, βρεθούν σε block, όπου υπάρχει μάχη, τότε πηγαίνει σε ειδικό μενού για τη μάχη, όπου εκεί δημιουργούνται τα τέρατα, τα οποία είναι ίδια σε αριθμό με τους ήρωες. Εκεί ο χρήστης επιλέγει έναν από τους ήρωες την φορά για να κάνει μια ενέργεια ή επιλέγει την επιλογή give up, όπου η μάχη τελειώνει και ο κάθε ήρωας χάνει κάποια νομίσματα και πηγαίνει στην μέση του χάρτη. Οι ενέργειες του κάθε ήρωα είναι κανονική επίθεση(επιλέγει ένα τέρας για να χτυπήσει), επίθεση με ξόρκι(επιλέγει ένα τέρας για να χτυπήσει), να χρησιμοποιήσει κάποιο φίλτρο, να αλλάξει πανοπλία/όπλο, ή να δει τα stats του ήρωα. Ο κάθε ήρωας μπορεί να κάνει ένα από αυτά. Η μάχη είναι turn based.

Το παιχνίδι θα ολοκληρωθεί εφόσον ο χρήστης περάσει όλα τα μπλοκς(εκτός από τα unaccesible) τουλάχιστον μια φορά.

Μετά την ολοκλήρωση του παιχνιδιού έχει αποδεσμευτεί όλος ο χώρος που δεσμεύτηκε δυναμικά και δεν υπάρχουν leaks.

######################################################################################################

Για τη μάχη έχει χρησιμοποιηθεί ένας έξτρα vector attacking. Με αυτόν τον τρόπο μπορούμε κάθε φορά να ελέγχουμε ποιοι ήρωες είναι διαθέσιμοι για μερικές ενέργειες, χωρίς να επηρεάζουμε τον κανονικό vector που είναι οι ήρωες.

######################################################################################################

Το project αποτελεί ομαδική δουλειά, μέσω του live sharing στο vs code.

About

RPG game that runs in the terminal with turned base combat

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published