در C#، مقادیر منطقی با نوع bool نمایش داده میشوند. مقادیر این نوع میتوانند true یا false باشند.
C# از سه عملگر منطقی پشتیبانی میکند: ! (NOT)، && (AND) و || (OR).
در این تمرین، منطق مأموریت یک بازی نقشآفرینی جدید را پیادهسازی میکنید که یکی از دوستانتان در حال ساخت آن است.
شخصیت اصلی بازی آنالین است؛ دختری شجاع با یک سگ خانگی وحشی و وفادار. متأسفانه فاجعه رخ میدهد، چون بهترین دوستش هنگام جستوجوی توتها در جنگل دزدیده شد.
آنالین تلاش میکند بهترین دوستش را پیدا و آزاد کند و در این مأموریت بهصورت اختیاری سگش را همراه خود میبرد.
پس از مدتی که صرف دنبال کردن رد بهترین دوستش میکند، اردوگاهی را پیدا میکند که بهترین دوستش در آن زندانی است. معلوم میشود دو آدمربا وجود دارد: یک شوالیهی قدرتمند و یک کماندار حیلهگر.
آنالین پس از یافتن آدمرباها بررسی میکند که میتواند دست به کدامیک از این کارها بزند:
چهار کار پیش رو دارید: پیادهسازی منطق تشخیص اینکه آیا اقدامات بالا، بر اساس وضعیت سه شخصیت موجود در جنگل و حضور یا نبود سگ خانگی آنالین، در دسترس هستند یا نه.
متد (static) QuestLogic.CanFastAttack() را پیادهسازی کنید که یک مقدار «منطقی» میگیرد که نشان میدهد شوالیه بیدار است یا نه. این متد اگر بر اساس وضعیت شوالیه بتوان حملهی سریع انجام داد true برمیگرداند؛ در غیر این صورت false برمیگرداند:
var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false
متد (static) QuestLogic.CanSpy() را پیادهسازی کنید که سه مقدار منطقی میگیرد که بهترتیب نشان میدهند شوالیه، کماندار و زندانی بیدار هستند یا نه. این متد اگر بر اساس وضعیت سه شخصیت بتوان از گروه جاسوسی کرد true برمیگرداند؛ در غیر این صورت false برمیگرداند:
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
متد (static) QuestLogic.CanSignalPrisoner() را پیادهسازی کنید که دو مقدار منطقی میگیرد که بهترتیب نشان میدهند کماندار و زندانی بیدار هستند یا نه. این متد اگر بر اساس وضعیت آن دو شخصیت بتوان به زندانی علامت داد true برمیگرداند؛ در غیر این صورت false برمیگرداند:
var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
متد (static) QuestLogic.CanFreePrisoner() را پیادهسازی کنید که چهار مقدار منطقی میگیرد. سه پارامتر اول بهترتیب نشان میدهند شوالیه، کماندار و زندانی بیدار هستند یا نه. پارامتر آخر نشان میدهد آیا سگ خانگی آنالین حضور دارد یا نه. این متد اگر بر اساس وضعیت سه شخصیت و حضور سگ خانگی آنالین بتوان زندانی را آزاد کرد true برمیگرداند؛ در غیر این صورت false برمیگرداند:
var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false