تُمثَّل القيم المنطقية في 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
في هذا التمرين، ستُنجز منطق المهمة للعبة تقمّص أدوار جديدة يعمل صديقك على تطويرها. الشخصية الرئيسية في اللعبة هي أنالين، فتاة شجاعة تمتلك كلبًا أليفًا شرسًا ووفيًا. للأسف، تقع الكارثة: فقد اختُطف صديقها المقرّب أثناء بحثه عن التوت في الغابة. ستحاول أنالين العثور على صديقها وإنقاذه، وقد تأخذ كلبها معها في المهمة.
بعد أن تتبّعت الأثر لبعض الوقت، تكتشف أنالين المخيّم الذي يُحتجز فيه صديقها. ويتّضح أن هناك خاطفَين: فارس جبّار ورامٍ ماكر.
بعد أن وجدت الخاطفين، تفكّر أنالين في أي من الإجراءات التالية يمكنها القيام بها:
لديك أربع مهام: إنجاز المنطق الذي يحدّد ما إذا كانت الإجراءات أعلاه متاحة بناءً على حالة الشخصيات الثلاث في الغابة وما إذا كان كلب أنالين الأليف موجودًا أم لا.
نفّذ الطريقة (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()، التي تأخذ أربع قيم منطقية.
تشير المعاملات الثلاثة الأولى على التوالي إلى ما إذا كان الفارس والرامي والسجين مستيقظين.
ويشير المعامل الأخير إلى ما إذا كان كلب أنالين الأليف موجودًا.
تُرجع الطريقة true إذا كان يمكن تحرير السجين بناءً على حالة الشخصيات الثلاث ووجود كلب أنالين الأليف.
وإلا فإنها تُرجع false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.