bool টাইপের (বুলিয়ানের সংক্ষিপ্ত রূপ) মাত্র দুটি মান আছে: true আর false।
কোডে true আর false লিটারেল মান লেখার সময় বড় হাতের না ছোট হাতের অক্ষর, তা কোনো পার্থক্য তৈরি করে না।
<?php
$value_is_true = true;
$value_is_false = false;
বুলিয়ান মান প্রায়ই লজিক্যাল এক্সপ্রেশনে কোনো অপারেটরের ফলাফল হিসেবে ব্যবহৃত হয়, আর তারপর কন্ট্রোল স্ট্রাকচারে ব্যবহার করা হয়।
কয়েকটি লজিক্যাল অপারেটর আছে:
!$a: $a যদি true না হয়, তাহলে true রিটার্ন করে$a && $b: $a আর $b দুটোই যদি true হয়, তাহলে true রিটার্ন করে$a || $b: $a বা $b যেকোনো একটি যদি true হয়, তাহলে true রিটার্ন করেএখানে and আর or অপারেটরও আছে, এবং এগুলো যথাক্রমে && আর ||-এর পরিপূরক।
এগুলো && আর ||-এর মতো একইভাবে কাজ করে না এবং অপ্রত্যাশিত ফলাফল দিতে পারে, তাই এগুলো ব্যবহার করতে নিরুৎসাহিত করা হয়।
এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের কোয়েস্ট লজিক তৈরি করবেন, যা আপনার এক বন্ধু বানাচ্ছে। গেমটির মূল চরিত্র অ্যানালিন, একজন সাহসী মেয়ে, যার আছে একটি দুর্দান্ত ও বিশ্বস্ত পোষা কুকুর। কিন্তু দুর্ভাগ্যবশত বিপর্যয় নেমে আসে: বনের মধ্যে বেরি খুঁজতে গিয়ে তার প্রাণপ্রিয় বন্ধুকে অপহরণ করা হয়। অ্যানালিন তার বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, এবং চাইলে এই অভিযানে তার কুকুরটিকেও সঙ্গে নিতে পারবে।
তার বন্ধুর চিহ্ন ধরে কিছু সময় এগোনোর পর, সে সেই শিবির খুঁজে পায় যেখানে তার বন্ধুকে বন্দি করে রাখা হয়েছে। দেখা যায়, অপহরণকারী দুজন: একজন শক্তিশালী নাইট আর একজন ধূর্ত তিরন্দাজ।
অপহরণকারীদের খুঁজে পাওয়ার পর, অ্যানালিন ভেবে দেখে নিচের কোন কোন কাজ সে করতে পারে:
আপনার সামনে চারটি কাজ: বনের মধ্যে পাওয়া তিনটি চরিত্রের অবস্থা এবং অ্যানালিনের পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরের কাজগুলো করা সম্ভব কি না তা নির্ধারণের লজিক তৈরি করা।
canFastAttack নামের একটি ফাংশন তৈরি করুন, যা একটি বুলিয়ান মান নেয় এবং তা নির্দেশ করে নাইট জেগে আছে কি না।
চরিত্রটির অবস্থার ভিত্তিতে 'দ্রুত আক্রমণ' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
<?php
$is_knight_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false
canSpy নামের একটি ফাংশন তৈরি করুন, যা তিনটি বুলিয়ান মান নেয়, যেগুলো যথাক্রমে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে।
চরিত্রগুলোর অবস্থার ভিত্তিতে 'গুপ্তচরবৃত্তি' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true
canSignal নামের একটি ফাংশন তৈরি করুন, যা দুটি বুলিয়ান মান নেয়, যেগুলো যথাক্রমে তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে।
চরিত্রগুলোর অবস্থার ভিত্তিতে 'বন্দিকে সংকেত পাঠানো' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
<?php
$is_archer_awake = false;
$is_prisoner_awake = true;
$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true
canLiberate নামের একটি ফাংশন তৈরি করুন, যা চারটি বুলিয়ান মান নেয়।
প্রথম তিনটি প্যারামিটার যথাক্রমে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে।
শেষ প্যারামিটারটি নির্দেশ করে অ্যানালিনের পোষা কুকুর উপস্থিত আছে কি না।
চরিত্রগুলোর অবস্থা ও অ্যানালিনের পোষা কুকুরের উপস্থিতির ভিত্তিতে 'বন্দিকে মুক্ত করা' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;
$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
$is_knight_awake,
$is_archer_awake,
$is_prisoner_awake,
$is_dog_present
);
// => false
Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।