Στη Java, οι Boolean (λογικές τιμές) αναπαρίστανται από τον τύπο boolean, του οποίου οι τιμές μπορούν να είναι είτε true είτε false.
Η Java υποστηρίζει τρεις τελεστές Boolean:
! (NOT): αντιστρέφει τη Boolean τιμή&& (AND): παίρνει δύο Boolean τιμές και επιστρέφει true αν είναι και οι δύο true
|| (OR): επιστρέφει true αν κάποια από τις δύο Boolean τιμές είναι true
!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος σου. Ο κεντρικός χαρακτήρας του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με έναν άγριο και πιστό σκύλο. Δυστυχώς, η καταστροφή χτυπά: ο καλύτερος φίλος της απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να βρει και να σώσει τον φίλο της, παίρνοντας προαιρετικά και τον σκύλο της μαζί στην αποστολή.
Αφού πέρασε λίγο χρόνο ακολουθώντας τα ίχνη, η Annalyn ανακαλύπτει το στρατόπεδο όπου κρατείται ο φίλος της. Αποδεικνύεται ότι υπάρχουν δύο απαγωγείς: ένας πανίσχυρος ιππότης και ένας πονηρός τοξότης.
Έχοντας βρει τους απαγωγείς, η Annalyn σκέφτεται ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:
Έχεις τέσσερις εργασίες: να υλοποιήσεις τη λογική που καθορίζει αν οι παραπάνω ενέργειες είναι διαθέσιμες, με βάση την κατάσταση των τριών χαρακτήρων στο δάσος και το αν ο σκύλος της Annalyn είναι παρών ή όχι.
Υλοποίησε τη μέθοδο (static) AnnalynsInfiltration.canFastAttack(), η οποία παίρνει μια Boolean τιμή (λογική τιμή) που δείχνει αν ο ιππότης είναι ξύπνιος.
Η μέθοδος επιστρέφει true αν μπορεί να γίνει γρήγορη επίθεση με βάση την κατάσταση του ιππότη.
Αλλιώς, επιστρέφει false:
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
Υλοποίησε τη μέθοδο (static) AnnalynsInfiltration.canSpy(), η οποία παίρνει τρεις Boolean τιμές (λογικές τιμές) που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η μέθοδος επιστρέφει true αν μπορείς να κατασκοπεύσεις την ομάδα με βάση την κατάσταση των τριών χαρακτήρων.
Αλλιώς, επιστρέφει false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
Υλοποίησε τη μέθοδο (static) AnnalynsInfiltration.canSignalPrisoner(), η οποία παίρνει δύο Boolean τιμές (λογικές τιμές) που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η μέθοδος επιστρέφει true αν μπορεί να δοθεί σήμα στον κρατούμενο με βάση την κατάσταση των δύο χαρακτήρων.
Αλλιώς, επιστρέφει false:
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
Υλοποίησε τη μέθοδο (static) AnnalynsInfiltration.canFreePrisoner(), η οποία παίρνει τέσσερις Boolean τιμές (λογικές τιμές).
Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η τελευταία παράμετρος δείχνει αν ο σκύλος της Annalyn είναι παρών.
Η μέθοδος επιστρέφει true αν μπορεί να ελευθερωθεί ο κρατούμενος με βάση την κατάσταση των τριών χαρακτήρων και την παρουσία του σκύλου της Annalyn.
Αλλιώς, επιστρέφει false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.