المسارات
/
C#
C#
/
التمارين
/
تسلّل أنالين
تسلّل أنالين

تسلّل أنالين

تمرين تعلّمي

مقدمة

القيم المنطقية

تُمثَّل القيم المنطقية في C# بالنوع bool، ويمكن أن تكون قيمه إما true أو false.

تدعم C# ثلاثة عوامل منطقية: ! (النفي)، و&& (و)، و|| (أو).

التعليمات

في هذا التمرين، ستُنفّذ منطق المهمة في لعبة تقمص أدوار جديدة يعمل صديقك على تطويرها.

الشخصية الرئيسية في اللعبة هي Annalyn، فتاة شجاعة تملك كلبًا أليفًا شرسًا ووفيًا. لكن الكارثة تحلّ، إذ اختُطفت صديقتها المفضلة بينما كانت تبحث عن التوت في الغابة.

ستحاول Annalyn العثور على صديقتها المفضلة وتحريرها، ويمكنها أن تصطحب كلبها معها في هذه المهمة.

بعد وقت من تتبع أثر صديقتها المفضلة، تجد المخيم الذي تحتجز فيه صديقتها. يتبين أن هناك خاطفين اثنين: فارس قوي ورامٍ ماكر.

بعد أن وجدت الخاطفين، تفكر Annalyn في أي الإجراءات التالية يمكنها القيام بها:

  • الهجوم السريع: يمكن شن هجوم سريع إذا كان الفارس نائمًا، إذ يستغرق وقتًا ليرتدي درعه، لذلك سيكون عرضة للخطر.
  • التجسس: يمكن التجسس على المجموعة إذا كان أحدهم مستيقظًا على الأقل. وإلا فالتجسس مضيعة للوقت.
  • إرسال إشارة إلى السجين: يمكن إرسال إشارة إلى السجين باستخدام أصوات الطيور إذا كان السجين مستيقظًا والرامي نائمًا، لأن الرماة مدرّبون على الإشارة بأصوات الطيور، ما يعني أنهم قد يعترضون الرسالة.
  • تحرير السجين: يمكن أن تحاول Annalyn التسلل إلى المخيم لتحرير السجين. هذا أمر محفوف بالمخاطر ولا يمكن أن ينجح إلا بإحدى طريقتين:
    • إذا كان كلبها الأليف معها، فيمكنها إنقاذ السجين إذا كان الرامي نائمًا. الفارس يخاف من الكلب ولن يكون لدى الرامي وقت للاستعداد قبل أن تتمكن Annalyn والسجين من الهرب.
    • إذا لم يكن كلبها معها، فعليها هي والسجين أن يتسللا بحذر شديد! يمكن لـ Annalyn تحرير السجين إذا كان السجين مستيقظًا وكان الفارس والرامي نائمين كلاهما، أما إذا كان السجين نائمًا فلا يمكن إنقاذه: إذ سيفزع السجين من ظهور Annalyn المفاجئ ويوقظ الفارس والرامي.

لديك أربع مهام: تنفيذ المنطق الذي يحدد ما إذا كانت الإجراءات المذكورة أعلاه متاحة بناءً على حالة الشخصيات الثلاث الموجودة في الغابة وما إذا كان كلب Annalyn الأليف حاضرًا أم لا.

1. التحقق مما إذا كان يمكن شن هجوم سريع

نفّذ الطريقة (static) QuestLogic.CanFastAttack() التي تأخذ قيمة منطقية تشير إلى ما إذا كان الفارس مستيقظًا. تُرجع هذه الطريقة true إذا كان يمكن شن هجوم سريع بناءً على حالة الفارس. وإلا فتُرجع false:

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

2. التحقق مما إذا كان يمكن التجسس على المجموعة

نفّذ الطريقة (static) QuestLogic.CanSpy() التي تأخذ ثلاث قيم منطقية تشير إلى ما إذا كان الفارس والرامي والسجين، على الترتيب، مستيقظين. تُرجع الطريقة true إذا كان يمكن التجسس على المجموعة بناءً على حالة الشخصيات الثلاث. وإلا فتُرجع false:

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

3. التحقق مما إذا كان يمكن إرسال إشارة إلى السجين

نفّذ الطريقة (static) QuestLogic.CanSignalPrisoner() التي تأخذ قيمتين منطقيتين تشير إلى ما إذا كان الرامي والسجين، على الترتيب، مستيقظين. تُرجع الطريقة true إذا كان يمكن إرسال إشارة إلى السجين بناءً على حالة الشخصيتين. وإلا فتُرجع false:

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

4. التحقق مما إذا كان يمكن تحرير السجين

نفّذ الطريقة (static) QuestLogic.CanFreePrisoner() التي تأخذ أربع قيم منطقية. تشير المعاملات الثلاثة الأولى إلى ما إذا كان الفارس والرامي والسجين، على الترتيب، مستيقظين. ويشير المعامل الأخير إلى ما إذا كان كلب 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

مستعد لبدء تسلّل أنالين؟

سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.