পাঠ ২: যদি/অন্যথায় শর্তসাপেক্ষ বিবৃতি
এই পাঠে, আপনি এমন একটি প্রকল্প তৈরি করবেন যেখানে VR রোবট Dynamic Castle Crasher Playgroundএ কমপক্ষে দুটি ভবনের উপর আঘাত করবে। প্রতিটি রিসেটের সাথে খেলার মাঠের বিন্যাস পরিবর্তিত হয় বলে লুপ এবং সেন্সর প্রতিক্রিয়া ব্যবহার করে চ্যালেঞ্জ সমাধানের জন্য একটি অ্যালগরিদমের প্রয়োজন হবে।
ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড লেআউটের উদাহরণ:

শেখার ফলাফল
- চিহ্নিত করুন যে একটি [If then else] ব্লক হল একটি C ব্লক যা রিপোর্ট করা বুলিয়ান মানের উপর ভিত্তি করে If বা Else শাখার ভিতরে ব্লকগুলি চালায়।
- শনাক্ত করুন যে শর্তটি একাধিকবার পরীক্ষা করার জন্য একটি [পুনরাবৃত্তি] বা একটি [চিরকাল] ব্লকের সাথে সাধারণত একটি [যদি তারপর অন্য] ব্লক ব্যবহার করা হয়।
- চিহ্নিত করুন এবং বর্ণনা করুন কেন লুপগুলির সাথে একটি [if then else] ব্লক ব্যবহার করা হয়।
- একটি প্রকল্পে [যদি তাহলে অন্য] শাখা চালানোর কারণ হবে তা বর্ণনা করুন।
কিভাবে একটি [যদি অন্যথায়] ব্লক ব্যবহার করবেন
এই চ্যালেঞ্জটি ইউনিট 2-এর ক্যাসেল ক্র্যাশার চ্যালেঞ্জ থেকে আলাদা। ইউনিট 2 চ্যালেঞ্জটি একটি স্থির খেলার মাঠে বিল্ডিংগুলিকে নক করার জন্য সাধারণ সিকোয়েন্সিং এবং ড্রাইভট্রেন কমান্ড ব্যবহার করেছে।

ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর পরিবর্তনের লেআউটের কারণে VR রোবট দুটি বা ততোধিক বিল্ডিং ছিটকে দেওয়ার জন্য একা ড্রাইভট্রেন কমান্ড যথেষ্ট হবে না। ড্রাইভট্রেন কমান্ডের একটি সেট একটি খেলার মাঠে কাজ করতে পারে, কিন্তু অন্যটিতে নয়। সেন্সর এবং নির্বাচন ব্যবহার করে এমন একটি অ্যালগরিদম প্রয়োজন হবে। এই প্রকল্পে শর্তসাপেক্ষ বিবৃতি সহ নির্বাচন যোগ করে একটি অ্যালগরিদম তৈরি করতে [যদি তারপর অন্য] ব্লক ব্যবহার করা হবে।

ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএ ভিআর রোবটের জন্য বিল্ডিংগুলির উপর আঘাত করার জন্য দুটি প্রধান পদক্ষেপ রয়েছে।
- যদি VR রোবট একটি দুর্গ বিল্ডিং শনাক্ত করে, তাহলে সেটিকে ছিটকে দিতে তার দিকে এগিয়ে যান।
-
অন্য সব খেলার মাঠের মতো নয়, ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড এর দেয়াল নেই। যেহেতু বিল্ডিংগুলি ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর একমাত্র বস্তু, তাই দূরত্ব সেন্সরটি বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে।

-
- যদি VR রোবট একটি দুর্গ বিল্ডিং শনাক্ত না করে, তাহলে আবার একটি দুর্গ ভবনের জন্য ঘুরে দেখুন।
-
যেহেতু বিল্ডিংগুলি ডাইনামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর একমাত্র বস্তু, তাই দূরত্ব সেন্সরটি দুর্গের বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে।

-
একবার ধাপ 1 এবং 2 সম্পূর্ণ হয়ে গেলে, VR রোবটটি ধাপ 1 এ ফিরে যেতে পারে এবং দূরত্ব সেন্সর ব্যবহার করে পরবর্তী বিল্ডিং খুঁজে পেতে পারে।
-
VEXcode VR-এ একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit9Lesson2।

-
কর্মক্ষেত্রে দুটি [মন্তব্য] ব্লক যোগ করুন এবং উপরে বর্ণিত ধাপগুলি পূরণ করুন।

-
উপরে বর্ণিত প্রতিটি ক্রিয়াকে ট্রিগার করতে একটি [যদি তারপর অন্য] ব্লক ব্যবহার করা যেতে পারে। প্রতিটি ক্রিয়া নির্ভর করে যে [If then else] ব্লকের বুলিয়ান কন্ডিশনটি সত্য বা মিথ্যা রিপোর্ট করে। [মন্তব্য] ব্লকের নিচে একটি [যদি তাহলে অন্য] ব্লক যোগ করুন।

আপনার তথ্যের জন্য
[যদি অন্যথায়] ব্লক হল একটি সি ব্লক যা বুলিয়ান রিপোর্টার ব্লককে ইনপুট হিসেবে গ্রহণ করে। [যদি তাহলে অন্য] ব্লক একটি শর্তসাপেক্ষ বিবৃতি যা একটি প্রকল্পের প্রবাহ নিয়ন্ত্রণ করে। শর্ত পূরণ করা হলে [যদি অন্যথায়] ব্লক নির্দেশের একটি নির্দিষ্ট ক্রম কার্যকর করবে, এবং শর্ত পূরণ না হলে নির্দেশের আরেকটি সেট, যার ফলে প্রকল্প প্রবাহকে 'শাখা' করা হবে। শুধুমাত্র একটি শাখা [যদি অন্যথায়] মৃত্যুদন্ড কার্যকর করা হবে।

- যদি শর্তটি সত্য হিসাবে রিপোর্ট করা হয়, তাহলে If then শাখার ভিতরের ব্লকগুলি চালানো হয়।
- যদি শর্তটি FALSE হিসাবে রিপোর্ট করা হয়, তাহলে অন্য শাখার ভিতরের ব্লকগুলি চালানো হয়৷

একটি শাখার ভিতরের সমস্ত ব্লক চালু হয়ে গেলে, প্রকল্পটি [যদি তারপর অন্য] ব্লকের বাইরে পরবর্তী ব্লকে চলে যাবে।
-
এই প্রকল্পে, দূরত্ব সেন্সর খেলার মাঠে বিল্ডিং সনাক্ত করতে ব্যবহার করা যেতে পারে। [If then else] ব্লকে <Distance found object> ব্লক যোগ করুন।

আপনার তথ্যের জন্য
<Distance found object> ব্লক হল একটি বুলিয়ান রিপোর্টার ব্লক যেটি রিপোর্ট করে যদি দূরত্ব সেন্সর VR রোবটের সামনে কোনো বস্তু খুঁজে পেয়েছে। VR রোবটের 3000 মিলিমিটার (মিমি) মধ্যে কোনো বস্তু বা পৃষ্ঠ থাকলে এই ব্লকটি সত্য বলে রিপোর্ট করে।

-
এখন [If then else] ব্লকের প্রতিটি শাখাকে প্রকল্পের শুরুতে তৈরি করা মন্তব্য ব্যবহার করে সংজ্ঞায়িত করতে হবে। যখন <Distance found object> ব্লক সত্য বলে রিপোর্ট করে, তখন VR রোবটটিকে সেই বিল্ডিংটির দিকে ধাক্কা দিতে হবে। সেই [মন্তব্য] ব্লকটি প্রকল্পের 'যদি তারপর' শাখায় সরান।

-
অন্য [মন্তব্য] ব্লকটি প্রকল্পের 'অন্য' শাখায় নিয়ে যান যদি VR রোবট কোনো বিল্ডিং শনাক্ত না করে তাহলে কী হবে।

-
[if then else] ব্লকের 'If then' শাখায় একটি [ড্রাইভ] ব্লক যোগ করুন।

-
যখন <Distance found object> ব্লক মিথ্যা রিপোর্ট করে, তখন VR রোবটকে ঘুরতে হবে এবং খেলার মাঠে একটি বিল্ডিং খুঁজে বের করতে হবে। [If then else] ব্লকের 'অন্য' শাখায় [মন্তব্য] ব্লকের নীচে একটি [টার্ন] ব্লক যোগ করুন।

-
প্রকল্পটি পরীক্ষা করার আগে, আরও একটি ব্লক যোগ করতে হবে। [যদি অন্যথা হয়] ব্লকগুলি স্ট্যাকের পরবর্তী ব্লকে যাওয়ার আগে কেবল বার শর্ত পরীক্ষা করবে। ইউনিট 7-এ, ভিআর রোবটকে বারবার ডাউন আই সেন্সরের অবস্থা পরীক্ষা করার নির্দেশ দেওয়ার জন্য প্রকল্পে একটি [চিরকাল] ব্লক যুক্ত করা হয়েছিল। দূরত্ব সেন্সরের অবস্থা বারবারচেক করা হচ্ছে তা নিশ্চিত করতে, [যদি অন্যথায়] ব্লকের চারপাশে ওয়ার্কস্পেসে একটি [ফরএভার] ব্লক টেনে আনুন।

-
ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ড খুলুন এবং প্রকল্পটি চালান।

-
একবার VR রোবট অন্তত দুটি বিল্ডিং ছিটকে গেলে, খেলার মাঠটি পুনরায় লোড করুন এবং ডায়নামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডএর অন্য লেআউটে প্রকল্পটি চালান।

-
প্রকল্পের প্রতিটি দৌড়ে, দূরত্ব সেন্সর দ্বারা একটি বিল্ডিং সনাক্ত না হওয়া পর্যন্ত VR রোবটটি ঘুরবে, তারপরে এটিকে ছিটকে যাওয়ার জন্য সেই বিল্ডিংয়ের দিকে ড্রাইভ করবে।

- প্রকল্পটি চালানোর সময়, VR রোবট একটি বিল্ডিং টুকরোকে প্রান্তে ঠেলে দিতে পারে এবং খেলার মাঠ থেকে পড়ে যেতে পারে। এর কারণ হল <Distance found object> ব্লক এখনও রিপোর্ট করছে যে VR রোবটের সামনে একটি বস্তু রয়েছে। যখন এই ব্লকটি TRUE রিপোর্ট করে, তখন VR রোবট এগিয়ে যায়। VR রোবটকে টেবিল থেকে পড়ে যাওয়ার জন্য নেতৃত্ব দিচ্ছেন।
এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।