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

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

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

Εισαγωγή

Boolean

Στη 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 μπορεί να προσπαθήσει να τρυπώσει στο στρατόπεδο για να ελευθερώσει τον κρατούμενο. Αυτό είναι ριψοκίνδυνο και μπορεί να πετύχει μόνο με έναν από τους δύο τρόπους:
    • Αν η Annalyn έχει τον σκύλο της, μπορεί να σώσει τον κρατούμενο αν ο τοξότης κοιμάται. Ο ιππότης φοβάται τον σκύλο και ο τοξότης δεν θα έχει χρόνο να ετοιμαστεί πριν προλάβουν η Annalyn και ο κρατούμενος να δραπετεύσουν.
    • Αν η Annalyn δεν έχει τον σκύλο της, τότε αυτή και ο κρατούμενος θα πρέπει να κινηθούν πολύ αθόρυβα! Η Annalyn μπορεί να ελευθερώσει τον κρατούμενο αν ο κρατούμενος είναι ξύπνιος και κοιμούνται και ο ιππότης και ο τοξότης. Ωστόσο, αν ο κρατούμενος κοιμάται, δεν μπορεί να σωθεί, καθώς θα ξαφνιαστεί από την ξαφνική εμφάνιση της Annalyn και θα ξυπνήσει τον ιππότη και τον τοξότη.

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

1. Έλεγξε αν μπορεί να γίνει γρήγορη επίθεση

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

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

2. Έλεγξε αν μπορείς να κατασκοπεύσεις την ομάδα

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

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Έλεγξε αν μπορεί να δοθεί σήμα στον κρατούμενο

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

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Έλεγξε αν μπορεί να ελευθερωθεί ο κρατούμενος

Υλοποίησε τη μέθοδο (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
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Java Exercism

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

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