Git Product home page Git Product logo

terminal-game's Introduction

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

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

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

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

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.

terminal-game's People

Contributors

nikpnevmatikos avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.