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

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

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

Εισαγωγή

Booleans (λογικές τιμές)

Τα Booleans στη C# αντιπροσωπεύονται από τον τύπο bool, του οποίου οι τιμές μπορούν να είναι είτε true είτε false.

Η C# υποστηρίζει τρεις τελεστές Boolean: ! (ΟΧΙ), && (ΚΑΙ), και || (Ή).

Οδηγίες

Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος σου.

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

Η Annalyn θα προσπαθήσει να βρει και να ελευθερώσει τον καλύτερό της φίλο, παίρνοντας προαιρετικά μαζί της τον σκύλο της σε αυτή την αποστολή.

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

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

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

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

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

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

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

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

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

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Έλεγξε αν μπορεί να δοθεί σήμα στον αιχμάλωτο

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

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Έλεγξε αν μπορεί να ελευθερωθεί ο αιχμάλωτος

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

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

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

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