Διαδρομές
/
JavaScript
JavaScript
/
Ασκήσεις
/
Η Παρείσφρηση της Annalyn
Η Παρείσφρηση της Annalyn

Η Παρείσφρηση της Annalyn

Άσκηση εκμάθησης

Εισαγωγή

Το boolean αντιπροσωπεύει μία από δύο τιμές: true ή false. Οι λογικοί τελεστές (!, &&, ||) χρησιμοποιούνται συνήθως με τιμές boolean και επιστρέφουν μια τιμή boolean.

Οδηγίες

Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος. Η κεντρική ηρωίδα του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με έναν άγριο και πιστό σκύλο. Δυστυχώς, η καταστροφή χτυπά: η καλύτερή της φίλη απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να βρει και να ελευθερώσει την καλύτερή της φίλη, παίρνοντας προαιρετικά μαζί της και τον σκύλο της σε αυτή την αποστολή.

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

Έχοντας βρει τους απαγωγείς, η Annalyn σκέφτεται ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:

  • Γρήγορη επίθεση: μια γρήγορη επίθεση μπορεί να γίνει αν ο ιππότης κοιμάται, καθώς χρειάζεται χρόνος για να φορέσει την πανοπλία του, οπότε θα είναι ευάλωτος.
  • Κατασκοπεία: μπορείς να κατασκοπεύσεις την ομάδα αν τουλάχιστον ένας από αυτούς είναι ξύπνιος. Διαφορετικά, η κατασκοπεία είναι χάσιμο χρόνου.
  • Σήμα στον κρατούμενο: μπορείς να στείλεις σήμα στον κρατούμενο με ήχους πουλιών αν ο κρατούμενος είναι ξύπνιος και ο τοξότης κοιμάται, καθώς οι τοξότες έχουν εκπαιδευτεί στην επικοινωνία με ήχους πουλιών, οπότε θα μπορούσαν να υποκλέψουν το μήνυμα.
  • Απελευθέρωση του κρατούμενου: η Annalyn μπορεί να προσπαθήσει να μπει κρυφά στο στρατόπεδο για να ελευθερώσει τον κρατούμενο. Αυτό είναι ριψοκίνδυνο και μπορεί να πετύχει μόνο με έναν από τους δύο παρακάτω τρόπους:
    • Αν η Annalyn έχει μαζί της τον σκύλο της, μπορεί να διασώσει τον κρατούμενο αν ο τοξότης κοιμάται. Ο ιππότης φοβάται τον σκύλο και ο τοξότης δε θα προλάβει να ετοιμαστεί πριν η Annalyn και ο κρατούμενος δραπετεύσουν.
    • Αν η Annalyn δεν έχει τον σκύλο της, τότε αυτή και ο κρατούμενος πρέπει να είναι πολύ πονηροί! Η Annalyn μπορεί να ελευθερώσει τον κρατούμενο αν ο κρατούμενος είναι ξύπνιος και ο ιππότης και ο τοξότης κοιμούνται και οι δύο, αλλά αν ο κρατούμενος κοιμάται, δεν είναι δυνατή η διάσωσή τους: ο κρατούμενος θα τρομάξει από την ξαφνική εμφάνιση της Annalyn και θα ξυπνήσει τον ιππότη και τον τοξότη.

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

1. Έλεγξε αν η ενέργεια "Γρήγορη επίθεση" είναι δυνατή

Υλοποίησε μια συνάρτηση με όνομα canExecuteFastAttack που δέχεται μια Boolean (λογική τιμή) η οποία δείχνει αν ο ιππότης είναι ξύπνιος. Η συνάρτηση επιστρέφει true αν η ενέργεια "Γρήγορη επίθεση" είναι διαθέσιμη με βάση την κατάσταση του χαρακτήρα. Διαφορετικά, επιστρέφει false:

const knightIsAwake = true;
canExecuteFastAttack(knightIsAwake);
// => false

2. Έλεγξε αν η ενέργεια "Κατασκοπεία" είναι δυνατή

Υλοποίησε μια συνάρτηση με όνομα canSpy που δέχεται τρεις τιμές Boolean, που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει true αν η ενέργεια "Κατασκοπεία" είναι διαθέσιμη με βάση την κατάσταση των χαρακτήρων. Διαφορετικά, επιστρέφει false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Έλεγξε αν η ενέργεια "Σήμα στον κρατούμενο" είναι δυνατή

Υλοποίησε μια συνάρτηση με όνομα canSignalPrisoner που δέχεται δύο τιμές Boolean, που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει true αν η ενέργεια "Σήμα στον κρατούμενο" είναι διαθέσιμη με βάση την κατάσταση των χαρακτήρων. Διαφορετικά, επιστρέφει false:

const archerIsAwake = false;
const prisonerIsAwake = true;
canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Έλεγξε αν η ενέργεια "Απελευθέρωση του κρατούμενου" είναι δυνατή

Υλοποίησε μια συνάρτηση με όνομα canFreePrisoner που δέχεται τέσσερις τιμές Boolean. Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η τελευταία παράμετρος δείχνει αν ο σκύλος της Annalyn είναι παρών. Η συνάρτηση επιστρέφει true αν η ενέργεια "Απελευθέρωση του κρατούμενου" είναι διαθέσιμη με βάση την κατάσταση των χαρακτήρων και την παρουσία του σκύλου της Annalyn. Διαφορετικά, επιστρέφει false:

const knightIsAwake = false;
const archerIsAwake = true;
const prisonerIsAwake = false;
const petDogIsPresent = false;
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
JavaScript Exercism

Έτοιμος να ξεκινήσεις την άσκηση Η Παρείσφρηση της Annalyn;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.