ট্র্যাক
/
PHP
PHP
/
অনুশীলনী
/
অ্যানালিনের অনুপ্রবেশ
অ্যানালিনের অনুপ্রবেশ

অ্যানালিনের অনুপ্রবেশ

লার্নিং অনুশীলনী

ভূমিকা

বুলিয়ান

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 রিটার্ন করে
Caution

এখানে and আর or অপারেটরও আছে, এবং এগুলো যথাক্রমে && আর ||-এর পরিপূরক। এগুলো && আর ||-এর মতো একইভাবে কাজ করে না এবং অপ্রত্যাশিত ফলাফল দিতে পারে, তাই এগুলো ব্যবহার করতে নিরুৎসাহিত করা হয়।

নির্দেশনা

এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের কোয়েস্ট লজিক তৈরি করবেন, যা আপনার এক বন্ধু বানাচ্ছে। গেমটির মূল চরিত্র অ্যানালিন, একজন সাহসী মেয়ে, যার আছে একটি দুর্দান্ত ও বিশ্বস্ত পোষা কুকুর। কিন্তু দুর্ভাগ্যবশত বিপর্যয় নেমে আসে: বনের মধ্যে বেরি খুঁজতে গিয়ে তার প্রাণপ্রিয় বন্ধুকে অপহরণ করা হয়। অ্যানালিন তার বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, এবং চাইলে এই অভিযানে তার কুকুরটিকেও সঙ্গে নিতে পারবে।

তার বন্ধুর চিহ্ন ধরে কিছু সময় এগোনোর পর, সে সেই শিবির খুঁজে পায় যেখানে তার বন্ধুকে বন্দি করে রাখা হয়েছে। দেখা যায়, অপহরণকারী দুজন: একজন শক্তিশালী নাইট আর একজন ধূর্ত তিরন্দাজ।

অপহরণকারীদের খুঁজে পাওয়ার পর, অ্যানালিন ভেবে দেখে নিচের কোন কোন কাজ সে করতে পারে:

  • দ্রুত আক্রমণ: নাইট যদি ঘুমিয়ে থাকে তবে দ্রুত আক্রমণ করা যায়, কারণ বর্ম পরতে তার সময় লাগে, ফলে সে অসহায় অবস্থায় থাকবে।
  • গুপ্তচরবৃত্তি: তাদের মধ্যে অন্তত একজন জেগে থাকলে দলটির উপর গুপ্তচরবৃত্তি করা যায়। নাহলে গুপ্তচরবৃত্তি শুধু সময় নষ্ট।
  • বন্দিকে সংকেত পাঠানো: বন্দি যদি জেগে থাকে আর তিরন্দাজ যদি ঘুমিয়ে থাকে, তবে পাখির ডাক দিয়ে বন্দিকে সংকেত পাঠানো যায়; কারণ তিরন্দাজরা পাখির সংকেতে প্রশিক্ষিত, তাই তারা বার্তাটি ধরে ফেলতে পারে।
  • বন্দিকে মুক্ত করা: অ্যানালিন চুপিসারে শিবিরে ঢুকে বন্দিকে মুক্ত করার চেষ্টা করতে পারে। এটি ঝুঁকিপূর্ণ কাজ, এবং কেবল দুটি উপায়ের একটিতে সফল হতে পারে:
    • অ্যানালিনের সঙ্গে তার পোষা কুকুর থাকলে, তিরন্দাজ ঘুমিয়ে থাকলেই সে বন্দিকে উদ্ধার করতে পারে। নাইট কুকুরটিকে ভয় পায়, আর অ্যানালিন ও বন্দি পালানোর আগে তিরন্দাজ প্রস্তুত হওয়ার সময় পাবে না।
    • অ্যানালিনের সঙ্গে কুকুর না থাকলে তাকে ও বন্দিকে খুব চুপিসারে কাজ করতে হবে! অ্যানালিন বন্দিকে মুক্ত করতে পারে যদি বন্দি জেগে থাকে এবং নাইট ও তিরন্দাজ দুজনেই ঘুমিয়ে থাকে, কিন্তু বন্দি যদি ঘুমিয়ে থাকে তবে তাকে উদ্ধার করা যায় না: অ্যানালিনের হঠাৎ আবির্ভাবে বন্দি চমকে উঠে নাইট ও তিরন্দাজকে জাগিয়ে ফেলবে।

আপনার সামনে চারটি কাজ: বনের মধ্যে পাওয়া তিনটি চরিত্রের অবস্থা এবং অ্যানালিনের পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরের কাজগুলো করা সম্ভব কি না তা নির্ধারণের লজিক তৈরি করা।

1. 'দ্রুত আক্রমণ' কাজটি সম্ভব কি না দেখুন

canFastAttack নামের একটি ফাংশন তৈরি করুন, যা একটি বুলিয়ান মান নেয় এবং তা নির্দেশ করে নাইট জেগে আছে কি না। চরিত্রটির অবস্থার ভিত্তিতে 'দ্রুত আক্রমণ' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে। নাহলে false রিটার্ন করে:

<?php
$is_knight_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false

2. 'গুপ্তচরবৃত্তি' কাজটি সম্ভব কি না দেখুন

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

3. 'বন্দিকে সংকেত পাঠানো' কাজটি সম্ভব কি না দেখুন

canSignal নামের একটি ফাংশন তৈরি করুন, যা দুটি বুলিয়ান মান নেয়, যেগুলো যথাক্রমে তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে। চরিত্রগুলোর অবস্থার ভিত্তিতে 'বন্দিকে সংকেত পাঠানো' কাজটি সম্ভব হলে ফাংশনটি true রিটার্ন করে। নাহলে false রিটার্ন করে:

<?php
$is_archer_awake = false;
$is_prisoner_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true

4. 'বন্দিকে মুক্ত করা' কাজটি সম্ভব কি না দেখুন

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
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
PHP Exercism

অ্যানালিনের অনুপ্রবেশ শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।