Στη Cairo, οι τιμές Boolean (λογική τιμή) αντιπροσωπεύονται από τον προκαθορισμένο τύπο bool, που μπορεί να πάρει ως τιμή είτε true είτε false.
let speeding = true; // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false'
Η Cairo υποστηρίζει τρεις λογικούς τελεστές που μπορούν να αξιολογήσουν εκφράσεις σε τιμές Boolean, επιστρέφοντας είτε true είτε false.
| Τελεστής | Τι σημαίνει |
|---|---|
&& (and) |
Είναι αληθές αν και οι δύο προτάσεις είναι αληθείς. |
|| (or) |
Είναι αληθές αν τουλάχιστον μία πρόταση είναι αληθής. |
! (not) |
Είναι αληθές μόνο αν η πρόταση είναι ψευδής. |
Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος. Η βασική ηρωίδα του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με έναν άγριο και πιστό σκύλο. Δυστυχώς, η καταστροφή χτυπά: ο καλύτερός της φίλος απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να τον βρει και να τον ελευθερώσει, παίρνοντας προαιρετικά μαζί της τον σκύλο της σε αυτή την αποστολή.
Αφού πέρασε λίγο καιρό ακολουθώντας τα ίχνη του καλύτερού της φίλου, βρίσκει το στρατόπεδο όπου εκείνος κρατείται. Αποδεικνύεται ότι υπάρχουν δύο απαγωγείς: ένας πανίσχυρος ιππότης και ένας πονηρός τοξότης.
Έχοντας βρει τους απαγωγείς, η Annalyn σκέφτεται ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:
Έχεις τέσσερις εργασίες: να υλοποιήσεις τη λογική που καθορίζει αν οι παραπάνω ενέργειες είναι διαθέσιμες, με βάση την κατάσταση των τριών χαρακτήρων που βρίσκονται στο δάσος και το αν ο σκύλος της Annalyn είναι παρών ή όχι.
Όρισε τη συνάρτηση can_fast_attack() που παίρνει μια Boolean τιμή που δείχνει αν ο ιππότης είναι ξύπνιος.
Η συνάρτηση επιστρέφει true αν μπορεί να γίνει γρήγορη επίθεση με βάση την κατάσταση του ιππότη.
Αλλιώς, επιστρέφει false:
let knight_awake = true;
can_fast_attack(knight_awake); // false
Όρισε τη συνάρτηση can_spy() που παίρνει τρεις Boolean τιμές, που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η συνάρτηση επιστρέφει true αν μπορείς να κατασκοπεύσεις την ομάδα, με βάση την κατάσταση των τριών χαρακτήρων.
Αλλιώς, επιστρέφει false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true
Όρισε τη συνάρτηση can_signal_prisoner() που παίρνει δύο Boolean τιμές, που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η συνάρτηση επιστρέφει true αν μπορείς να δώσεις σήμα στον κρατούμενο, με βάση την κατάσταση των δύο χαρακτήρων.
Αλλιώς, επιστρέφει false:
let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true
Όρισε τη συνάρτηση can_free_prisoner() που παίρνει τέσσερις Boolean τιμές.
Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η τελευταία παράμετρος δείχνει αν ο σκύλος της Annalyn είναι παρών.
Η συνάρτηση επιστρέφει true αν μπορείς να ελευθερώσεις τον κρατούμενο, με βάση την κατάσταση των τριών χαρακτήρων και την παρουσία του σκύλου της Annalyn.
Αλλιώς, επιστρέφει false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Cairo με 25 έννοιες68 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.