مسیرها
/
C#
C#
/
تمرین‌ها
/
نفوذ آنالین
نفوذ آنالین

نفوذ آنالین

تمرین یادگیری

مقدمه

«منطقی»

در C#، مقادیر منطقی با نوع bool نمایش داده می‌شوند. مقادیر این نوع می‌توانند true یا false باشند.

C# از سه عملگر منطقی پشتیبانی می‌کند: ! (NOT)، && (AND) و || (OR).

دستورالعمل‌ها

در این تمرین، منطق مأموریت یک بازی نقش‌آفرینی جدید را پیاده‌سازی می‌کنید که یکی از دوستانتان در حال ساخت آن است.

شخصیت اصلی بازی آنالین است؛ دختری شجاع با یک سگ خانگی وحشی و وفادار. متأسفانه فاجعه رخ می‌دهد، چون بهترین دوستش هنگام جست‌وجوی توت‌ها در جنگل دزدیده شد.

آنالین تلاش می‌کند بهترین دوستش را پیدا و آزاد کند و در این مأموریت به‌صورت اختیاری سگش را همراه خود می‌برد.

پس از مدتی که صرف دنبال کردن رد بهترین دوستش می‌کند، اردوگاهی را پیدا می‌کند که بهترین دوستش در آن زندانی است. معلوم می‌شود دو آدم‌ربا وجود دارد: یک شوالیه‌ی قدرتمند و یک کماندار حیله‌گر.

آنالین پس از یافتن آدم‌رباها بررسی می‌کند که می‌تواند دست به کدام‌یک از این کارها بزند:

  • حمله‌ی سریع: اگر شوالیه خواب باشد می‌توان حمله‌ی سریع انجام داد، چون زمان می‌برد تا زرهش را بپوشد و در نتیجه آسیب‌پذیر خواهد بود.
  • جاسوسی: اگر دست‌کم یکی از آن‌ها بیدار باشد می‌توان از گروه جاسوسی کرد. در غیر این صورت، جاسوسی اتلاف وقت است.
  • علامت دادن به زندانی: اگر زندانی بیدار و کماندار خواب باشد می‌توان با صداهای پرنده به زندانی علامت داد، چون کماندارها در علامت‌دهی با پرندگان آموزش دیده‌اند و در نتیجه می‌توانند پیام را رهگیری کنند.
  • آزاد کردن زندانی: آنالین می‌تواند تلاش کند دزدکی وارد اردوگاه شود تا زندانی را آزاد کند. این کار خطرناکی است و فقط به یکی از دو روش می‌تواند موفق شود:
    • اگر آنالین سگ خانگی‌اش را همراه داشته باشد، اگر کماندار خواب باشد می‌تواند زندانی را نجات دهد. شوالیه از سگ می‌ترسد و کماندار فرصت نمی‌کند آماده شود پیش از آن‌که آنالین و زندانی فرار کنند.
    • اگر آنالین سگش را همراه نداشته باشد، آن‌وقت او و زندانی باید بسیار مخفیانه عمل کنند! آنالین می‌تواند زندانی را آزاد کند اگر زندانی بیدار و شوالیه و کماندار هر دو خواب باشند، اما اگر زندانی خواب باشد نمی‌توان نجاتش داد: زندانی از ظاهر شدن ناگهانی آنالین جا می‌خورد و شوالیه و کماندار را بیدار می‌کند.

چهار کار پیش رو دارید: پیاده‌سازی منطق تشخیص این‌که آیا اقدامات بالا، بر اساس وضعیت سه شخصیت موجود در جنگل و حضور یا نبود سگ خانگی آنالین، در دسترس هستند یا نه.

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() را پیاده‌سازی کنید که چهار مقدار منطقی می‌گیرد. سه پارامتر اول به‌ترتیب نشان می‌دهند شوالیه، کماندار و زندانی بیدار هستند یا نه. پارامتر آخر نشان می‌دهد آیا سگ خانگی آنالین حضور دارد یا نه. این متد اگر بر اساس وضعیت سه شخصیت و حضور سگ خانگی آنالین بتوان زندانی را آزاد کرد true برمی‌گرداند؛ در غیر این صورت 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.