«منطقی» در Java با نوع boolean نمایش داده میشود و مقدارش میتواند true یا false باشد.
Java از سه عملگر منطقی پشتیبانی میکند:
! (NOT): مقدار منطقی را نقیض میکند&& (AND): دو مقدار منطقی میگیرد و اگر هر دو true باشند true برمیگرداند|| (OR): اگر یکی از آن دو مقدار منطقی true باشد، true برمیگرداند!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
در این تمرین، منطق مأموریت را برای یک بازی نقشآفرینی جدید که دوستتان در حال ساخت آن است پیادهسازی میکنید. شخصیت اصلی بازی Annalyn است، دختری شجاع با یک سگ خانگی سرسخت و وفادار. متأسفانه، فاجعه رخ میدهد: بهترین دوستش هنگام جستوجوی توت در جنگل دزدیده شد. Annalyn تلاش میکند دوستش را پیدا کند و نجات دهد و در صورت تمایل سگش را هم در این مأموریت همراه ببرد.
Annalyn پس از مدتی دنبال کردن رد، اردوگاهی را پیدا میکند که دوستش در آن زندانی است. معلوم میشود دو آدمربا وجود دارد: یک شوالیهی قدرتمند و یک کماندار حیلهگر.
Annalyn پس از یافتن آدمرباها، در نظر میگیرد که کدامیک از اقدامات زیر را میتواند انجام دهد:
شما چهار کار دارید: پیادهسازی منطقی که بر اساس وضعیت سه شخصیت در جنگل و اینکه سگ خانگی Annalyn حضور دارد یا نه، مشخص کند آیا اقدامات بالا در دسترس هستند یا نه.
متد (static) AnnalynsInfiltration.canFastAttack() را پیادهسازی کنید که یک مقدار «منطقی» میگیرد که نشان میدهد آیا شوالیه بیدار است.
این متد اگر بر اساس وضعیت شوالیه بتوان حملهی سریع انجام داد، true برمیگرداند.
در غیر این صورت، false برمیگرداند:
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
متد (static) AnnalynsInfiltration.canSpy() را پیادهسازی کنید که سه مقدار منطقی میگیرد که بهترتیب نشان میدهند آیا شوالیه، کماندار و زندانی بیدار هستند.
این متد اگر بر اساس وضعیت سه شخصیت بتوان از گروه جاسوسی کرد، true برمیگرداند.
در غیر این صورت، false برمیگرداند:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
متد (static) AnnalynsInfiltration.canSignalPrisoner() را پیادهسازی کنید که دو مقدار منطقی میگیرد که بهترتیب نشان میدهند آیا کماندار و زندانی بیدار هستند.
این متد اگر بر اساس وضعیت دو شخصیت بتوان به زندانی علامت داد، true برمیگرداند.
در غیر این صورت، false برمیگرداند:
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
متد (static) AnnalynsInfiltration.canFreePrisoner() را پیادهسازی کنید که چهار مقدار منطقی میگیرد.
سه پارامتر اول بهترتیب نشان میدهند آیا شوالیه، کماندار و زندانی بیدار هستند.
پارامتر آخر نشان میدهد آیا سگ خانگی Annalyn حضور دارد.
این متد اگر بر اساس وضعیت سه شخصیت و حضور سگ خانگی Annalyn بتوان زندانی را آزاد کرد، true برمیگرداند.
در غیر این صورت، false برمیگرداند:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false