পাঠ ২: তুলনামূলক ব্লক ব্যবহার করা এবং কাছাকাছি না আসা পর্যন্ত গাড়ি চালানো
এই পাঠে, আপনি এমন একটি প্রকল্প তৈরি করবেন যা <Less than> বুলিয়ান রিপোর্টার ব্লকের সাহায্যে দূরত্ব সেন্সর ব্যবহার করে VR রোবটকে 'A' অক্ষরে নেভিগেট করবে। মিনি-চ্যালেঞ্জে, আপনি ওয়াল মেজের শুরু থেকে '১' নম্বরে নেভিগেট করার জন্য এই দক্ষতাগুলি প্রয়োগ করবেন।

শেখার ফলাফল
- শনাক্ত করুন যে <Greater than> ব্লকটি একটি বুলিয়ান ব্লক যা প্রথম মানটি দ্বিতীয় মানের চেয়ে বড় কিনা তা রিপোর্ট করে।
- শনাক্ত করুন যে <Less than> ব্লকটি একটি বুলিয়ান ব্লক যা প্রথম মানটি দ্বিতীয় মানের চেয়ে কম কিনা তা রিপোর্ট করে।
- [অপেক্ষা করুন] ব্লকে <Greater than> বা <Less than> ব্লকগুলি TRUE বা FALSE মান রিপোর্ট করে কিনা তা চিহ্নিত করুন।
- কীভাবে এমন একটি প্রকল্প তৈরি করবেন যেখানে একটি VR রোবট ড্রাইভ ফরোয়ার্ড থাকবে যতক্ষণ না দূরত্ব সেন্সরের মান 50 মিলিমিটার (মিমি) এর থ্রেশহোল্ড মানের চেয়ে কম হয়।
প্রকল্পের নাম দিন এবং সংরক্ষণ করুন
- VEXcode VR তে একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit5Lesson2। মনে রাখবেন যে আপনি আপনার প্রকল্পের জন্য VEXcode ব্লক, সুইচ ব্লক, অথবা উভয় ধরণের ব্লকের সংমিশ্রণ ব্যবহার করতে পারেন।

দেয়াল এড়াতে দূরত্ব সেন্সর ব্যবহার করুন
- [ড্রাইভ] ব্লকটি কর্মক্ষেত্রে টেনে আনুন।

- [ড্রাইভ] ব্লকের নিচে একটি [অপেক্ষা করুন] ব্লক সংযুক্ত করুন।

এই প্রজেক্টটি ওয়াল মেজ প্লেগ্রাউন্ড এর মধ্য দিয়ে নেভিগেট করার জন্য ডিসট্যান্স সেন্সর ব্যবহার করবে দেয়ালের সাথে আছড়ে না পড়ে। আপনি এই প্রকল্পে <Less than> বুলিয়ান ব্লকের ভিতরে (থেকে দূরত্ব) ব্লক ব্যবহার করবেন।
<Less than>, <Greater than>, এবং <Equal to> হল তুলনা ব্লক - তারা মান তুলনা করে। এগুলি হল বুলিয়ান রিপোর্টার ব্লক যা তুলনা শর্ত পূরণ হলে একটি সত্য মান রিপোর্ট করে এবং শর্ত নয় পূরণ হলে মিথ্যা।
- প্রথম মানটি দ্বিতীয় মানের থেকে ছোট হলে <Less than> TRUE এবং প্রথম মানটি দ্বিতীয় মানের থেকে বড় বা সমান হলে FALSE রিপোর্ট করে৷

- প্রথম মান দ্বিতীয় মানের থেকে বড় হলে <Greater than> TRUE এবং প্রথম মান দ্বিতীয় মানের থেকে ছোট বা সমান হলে FALSE রিপোর্ট করে৷

- <Equal to> রিপোর্ট করে TRUE যখন দুটি মান ঠিক একই হয় এবং FALSE না হলে।

তুলনা ব্লকগুলি দশমিক, পূর্ণসংখ্যা বা সাংখ্যিক ব্লক গ্রহণ করতে পারে। তারা রাউন্ড রিপোর্টার ব্লকগুলিও গ্রহণ করে, যেমন (থেকে দূরত্ব) ব্লক। একটি প্রকল্পে দূরত্ব সেন্সর ব্যবহার করার সময় (থেকে দূরত্ব) ব্লক তুলনামূলক ব্লকের সাথে হতে পারে।
এই উদাহরণে, ব্লকটি সত্য রিপোর্ট করবে যখন কোনো বস্তু থেকে দূরত্ব এবং VR রোবটের দূরত্ব সেন্সর 50 মিলিমিটার (মিমি) থেকে কম হয়।

- <Less than> বুলিয়ান ব্লকটি [অপেক্ষা করুন] ব্লকে টেনে আনুন।
- বুলিয়ান রিপোর্টার ব্লকের ভেতরে গোলাকার (দূরত্ব) ব্লকটি রাখুন।

- [অপেক্ষা করুন] ব্লকটি VR রোবটকে শর্ত পূরণ না হওয়া পর্যন্ত এগিয়ে নিয়ে যাবে, এবং রিপোর্ট করা দূরত্ব 50 মিলিমিটার (মিমি) এর কম। তারপর, প্রকল্পটি স্ট্যাকের পরবর্তী ব্লকে চলে যাবে, যেটি হবে [ড্রাইভিং বন্ধ করুন] ব্লক।

- [অপেক্ষা করুন] ব্লকের পরে একটি [স্টপ ড্রাইভিং] ব্লক প্রয়োজন কারণ VR রোবটটি থামার নির্দেশ না দেওয়া পর্যন্ত গাড়ি চালিয়ে যাবে। প্রকল্পে একটি [স্টপ ড্রাইভিং] ব্লক যোগ করুন।

- ওয়াল মেজ প্লেগ্রাউন্ড চালু করুন যদি এটি ইতিমধ্যে খোলা না থাকে এবং প্রকল্পটি চালান।
- ওয়াল ধাঁধাঁর শুরু থেকে VR রোবট ড্রাইভটি দেখুন এবং যখন দূরত্ব সেন্সর রিপোর্ট করে যে এটি প্রাচীর থেকে 50 মিলিমিটার (মিমি) এর কম হয় তখন থামুন।

- [অপেক্ষা করুন] ব্লকের ভিতরে (থেকে দূরত্ব) ব্লকের সাথে <Less than> ব্লক ব্যবহার করে, থামার আগে ভিআর রোবটকে দেয়াল থেকে 50 মিলিমিটার (মিমি) কম না হওয়া পর্যন্ত অপেক্ষা করতে নির্দেশ দেয়।
- VR রোবটটিকে আবার শুরুর অবস্থানে নিয়ে যেতে খেলার মাঠ রিসেট করুন।
সুইচ ব্লক ব্যবহার করা
এই পাঠে, আপনি <Greater than>, <Less than>, এবং <Equal to> বুলিয়ান ব্লক সম্পর্কে শিখেছেন। নিচের ছবিতে সুইচ বুলিয়ান তুলনা ব্লকগুলি দেখানো হয়েছে। একটি সুইচ বুলিয়ান ব্লককে উদ্দেশ্য অনুযায়ী কাজ করার জন্য, সুইচ পাইথন ফাংশনগুলিকে সঠিক বানান এবং বিরামচিহ্ন সহ প্রবেশ করাতে হবে।
মনে রাখবেন যে সুইচ <Equal to> ব্লক দুটি সমান চিহ্ন (==)ব্যবহার করে। কারণ পাইথনে, একটি সমান চিহ্ন (=) একটি মানের (যেমন, x = 10) অ্যাসাইনমেন্টকে প্রতিনিধিত্ব করে, যেখানে দুটি সমান চিহ্ন (==) দুটি মান সমান কিনা তা পরীক্ষা করে। সুইচ <Equal to> ব্লক ব্যবহার করার সময় দুটি সমান চিহ্ন ব্যবহার করতে ভুলবেন না। 
আপনি এমন একটি প্রকল্পের উদাহরণও দেখেছেন যেখানে VR রোবটটি কোনও বস্তু থেকে ৫০ মিলিমিটার (মিমি) এর কম দূরত্ব না হওয়া পর্যন্ত এগিয়ে যাবে। তারপর, ভিআর রোবটটি বন্ধ হয়ে যাবে। ডানদিকের প্রকল্পটি একটি সুইচ ব্লকের ভিতরে সংশ্লিষ্ট পাইথন কমান্ডগুলি দেখায়। while not front_distance.get_distance(MM) < 50কমান্ডটি রোবটকে বলে যে, কোনও বস্তু থেকে রিপোর্ট করা দূরত্ব 50 MM-এর কম কিনা তা পরীক্ষা করতে।
পরবর্তী ইন্ডেন্টেড কোড লাইন,wait (5, MSEC),কোডটিকে 5 মিলিসেকেন্ডের জন্য বিরতি দেয়। যে কমান্ডটি পরীক্ষা করে যে কোনও বস্তু থেকে রিপোর্ট করা দূরত্ব 50 MM এর কম কিনা, তা আবার অবস্থা পরীক্ষা করার আগে 5 MSEC পর্যন্ত অপেক্ষা করবে।

এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।