Skip to main content

পাঠ ২: তুলনামূলক ব্লক ব্যবহার করা এবং কাছাকাছি না আসা পর্যন্ত গাড়ি চালানো

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

ভিআর রোবটের শুরুর অবস্থানের কাছে, একটি লাল বাক্সে "A goal" অক্ষরটি হাইলাইট করা দেয়ালের গোলকধাঁধার উপর থেকে নীচের দৃশ্য।

শেখার ফলাফল

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

প্রকল্পের নাম দিন এবং সংরক্ষণ করুন

  • VEXcode VR তে একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit5Lesson2। মনে রাখবেন যে আপনি আপনার প্রকল্পের জন্য VEXcode ব্লক, সুইচ ব্লক, অথবা উভয় ধরণের ব্লকের সংমিশ্রণ ব্যবহার করতে পারেন। 
VEXcode VR টুলবার যেখানে 'প্রকল্পের নাম' বোতামটি লাল বাক্সে হাইলাইট করা আছে, Select Playground বোতামের বাম দিকে। প্রকল্পের নাম ইউনিট ৫ পাঠ ২ নির্ধারণ করা হয়েছে।

দেয়াল এড়াতে দূরত্ব সেন্সর ব্যবহার করুন

  • [ড্রাইভ] ব্লকটি কর্মক্ষেত্রে টেনে আনুন।
    VEXcode VR ব্লক প্রজেক্ট, শুরুতে "শুরু হলে" ব্লক দিয়ে শুরু হয় এবং এর নিচে একটি ড্রাইভ ফরোয়ার্ড ব্লক থাকে। ড্রাইভ ফরোয়ার্ড ব্লকটি হাইলাইট করে একটি লাল বাক্স রয়েছে।
  • [ড্রাইভ] ব্লকের নিচে একটি [অপেক্ষা করুন] ব্লক সংযুক্ত করুন।
    আগের মতোই VEXcode VR ব্লক প্রজেক্ট, কিন্তু এখন নীচে একটি "Wait Until" ব্লক রয়েছে যা একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে। সম্পূর্ণ প্রকল্পটিতে লেখা আছে "শুরু হলে, এগিয়ে যান এবং অপেক্ষা করুন"। "Wait Until" ব্লকের প্যারামিটারটি খালি।

এই প্রজেক্টটি ওয়াল মেজ প্লেগ্রাউন্ড এর মধ্য দিয়ে নেভিগেট করার জন্য ডিসট্যান্স সেন্সর ব্যবহার করবে দেয়ালের সাথে আছড়ে না পড়ে। আপনি এই প্রকল্পে <Less than> বুলিয়ান ব্লকের ভিতরে (থেকে দূরত্ব) ব্লক ব্যবহার করবেন।

<Less than>, <Greater than>, এবং <Equal to> হল তুলনা ব্লক - তারা মান তুলনা করে। এগুলি হল বুলিয়ান রিপোর্টার ব্লক যা তুলনা শর্ত পূরণ হলে একটি সত্য মান রিপোর্ট করে এবং শর্ত নয় পূরণ হলে মিথ্যা।

  • প্রথম মানটি দ্বিতীয় মানের থেকে ছোট হলে <Less than> TRUE এবং প্রথম মানটি দ্বিতীয় মানের থেকে বড় বা সমান হলে FALSE রিপোর্ট করে৷
    VEXcode VR বুলিয়ান ব্লকের চেয়ে কম, '৫০ এর চেয়ে কম ২৫' পড়ছে।
  • প্রথম মান দ্বিতীয় মানের থেকে বড় হলে <Greater than> TRUE এবং প্রথম মান দ্বিতীয় মানের থেকে ছোট বা সমান হলে FALSE রিপোর্ট করে৷
    VEXcode VR বুলিয়ান ব্লকের চেয়ে বড়, যার পড়া '৫০ এর চেয়ে ১০০ বড়'।
  • <Equal to> রিপোর্ট করে TRUE যখন দুটি মান ঠিক একই হয় এবং FALSE না হলে।
    VEXcode VR Equal To বুলিয়ান ব্লক, '50 equal to 50' পড়ছে।

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

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

VEXcode VR বুলিয়ান ব্লকের চেয়ে কম, যার ভেতরে একটি Distance From ব্লক থাকবে, যার লেখা থাকবে 'Front Distance in millimeters less than 50'।

  • <Less than> বুলিয়ান ব্লকটি [অপেক্ষা করুন] ব্লকে টেনে আনুন।
  • বুলিয়ান রিপোর্টার ব্লকের ভেতরে গোলাকার (দূরত্ব) ব্লকটি রাখুন।
    VEXcode VR ব্লক প্রকল্প যা পূর্ববর্তী ধাপগুলিকে একত্রিত করে। পুরো প্রকল্পটি এখন "শুরু হলে, সামনের দিকে গাড়ি চালান" এবং "সামনের দূরত্ব মিলিমিটারে ৫০ এর কম না হওয়া পর্যন্ত অপেক্ষা করুন" লেখা আছে। একটি লাল বাক্স লেস দ্যান বুলিয়ান ব্লকটি হাইলাইট করে।
  • [অপেক্ষা করুন] ব্লকটি VR রোবটকে শর্ত পূরণ না হওয়া পর্যন্ত এগিয়ে নিয়ে যাবে, এবং রিপোর্ট করা দূরত্ব 50 মিলিমিটার (মিমি) এর কম। তারপর, প্রকল্পটি স্ট্যাকের পরবর্তী ব্লকে চলে যাবে, যেটি হবে [ড্রাইভিং বন্ধ করুন] ব্লক।
    VEXcode VR ব্লক প্রকল্পে যুক্তির প্রবাহকে কল্পনা করে একটি চিত্র। প্রকল্পটি সামনের দিকে ড্রাইভিং করে শুরু হয় এবং সেই কমান্ডটি ধরে রাখে যতক্ষণ না ফ্রন্ট ডিসটেন্স সেন্সরের মিলিমিটারে দূরত্ব ৫০ এর কম হয়, যার পরে একটি স্টপ ড্রাইভিং ব্লক ড্রাইভ ফরোয়ার্ড কমান্ডটি শেষ করে।
  • [অপেক্ষা করুন] ব্লকের পরে একটি [স্টপ ড্রাইভিং] ব্লক প্রয়োজন কারণ VR রোবটটি থামার নির্দেশ না দেওয়া পর্যন্ত গাড়ি চালিয়ে যাবে। প্রকল্পে একটি [স্টপ ড্রাইভিং] ব্লক যোগ করুন।
    VEXcode VR প্রকল্পটিকে আগের থেকে ব্লক করে, Wait Until ব্লকের পরে একটি Stop Driving ব্লক যোগ করা হয়েছে। পুরো প্রকল্পটি এখন পড়ে আছে, শুরু হলে সামনের দিকে গাড়ি চালান এবং মিলিমিটারে সামনের দূরত্ব ৫০ এর কম না হওয়া পর্যন্ত অপেক্ষা করুন, তারপর গাড়ি চালানো বন্ধ করুন।
  • ওয়াল মেজ প্লেগ্রাউন্ড চালু করুন যদি এটি ইতিমধ্যে খোলা না থাকে এবং প্রকল্পটি চালান।
  • ওয়াল ধাঁধাঁর শুরু থেকে VR রোবট ড্রাইভটি দেখুন এবং যখন দূরত্ব সেন্সর রিপোর্ট করে যে এটি প্রাচীর থেকে 50 মিলিমিটার (মিমি) এর কম হয় তখন থামুন।
    ভিআর রোবটের শুরুর অবস্থানের কাছে "A goal" অক্ষর সহ দেয়ালের গোলকধাঁধার উপর থেকে নীচের দৃশ্য। ব্লক প্রকল্পের ফলে ভিআর রোবট এখন এগিয়ে গেছে।
  • [অপেক্ষা করুন] ব্লকের ভিতরে (থেকে দূরত্ব) ব্লকের সাথে <Less than> ব্লক ব্যবহার করে, থামার আগে ভিআর রোবটকে দেয়াল থেকে 50 মিলিমিটার (মিমি) কম না হওয়া পর্যন্ত অপেক্ষা করতে নির্দেশ দেয়।
  • VR রোবটটিকে আবার শুরুর অবস্থানে নিয়ে যেতে খেলার মাঠ রিসেট করুন।

সুইচ ব্লক ব্যবহার করা

এই পাঠে, আপনি <Greater than>, <Less than>, এবং <Equal to> বুলিয়ান ব্লক সম্পর্কে শিখেছেন। নিচের ছবিতে সুইচ বুলিয়ান তুলনা ব্লকগুলি দেখানো হয়েছে। একটি সুইচ বুলিয়ান ব্লককে উদ্দেশ্য অনুযায়ী কাজ করার জন্য, সুইচ পাইথন ফাংশনগুলিকে সঠিক বানান এবং বিরামচিহ্ন সহ প্রবেশ করাতে হবে। 

মনে রাখবেন যে সুইচ <Equal to> ব্লক দুটি সমান চিহ্ন (==)ব্যবহার করে। কারণ পাইথনে, একটি সমান চিহ্ন (=) একটি মানের (যেমন, x = 10) অ্যাসাইনমেন্টকে প্রতিনিধিত্ব করে, যেখানে দুটি সমান চিহ্ন (==) দুটি মান সমান কিনা তা পরীক্ষা করে। সুইচ <Equal to> ব্লক ব্যবহার করার সময় দুটি সমান চিহ্ন ব্যবহার করতে ভুলবেন না। 
তিনটি VEXcode VR বুলিয়ান ব্লক এবং তাদের সংশ্লিষ্ট সুইচ ব্লকের তুলনা। পাইথনে লেস থান ব্লকটি '25 < 50' হিসেবে লেখা হয়, গ্রেটার থান ব্লকটি পাইথনে '100 > 50' হিসেবে লেখা হয়, এবং ইকুয়াল টু ব্লকটি পাইথনে '50 == 50' হিসেবে লেখা হয়। একটি লাল বাক্স শেষ উদাহরণে দ্বিগুণ সমান চিহ্নগুলিকে হাইলাইট করে, যা দেখায় যে পাইথনে দুটি মানের সমান তুলনা কীভাবে করা যায়।

আপনি এমন একটি প্রকল্পের উদাহরণও দেখেছেন যেখানে VR রোবটটি কোনও বস্তু থেকে ৫০ মিলিমিটার (মিমি) এর কম দূরত্ব না হওয়া পর্যন্ত এগিয়ে যাবে। তারপর, ভিআর রোবটটি বন্ধ হয়ে যাবে। ডানদিকের প্রকল্পটি একটি সুইচ ব্লকের ভিতরে সংশ্লিষ্ট পাইথন কমান্ডগুলি দেখায়। while not front_distance.get_distance(MM) < 50কমান্ডটি রোবটকে বলে যে, কোনও বস্তু থেকে রিপোর্ট করা দূরত্ব 50 MM-এর কম কিনা তা পরীক্ষা করতে।

পরবর্তী ইন্ডেন্টেড কোড লাইন,wait (5, MSEC),কোডটিকে 5 মিলিসেকেন্ডের জন্য বিরতি দেয়। যে কমান্ডটি পরীক্ষা করে যে কোনও বস্তু থেকে রিপোর্ট করা দূরত্ব 50 MM এর কম কিনা, তা আবার অবস্থা পরীক্ষা করার আগে 5 MSEC পর্যন্ত অপেক্ষা করবে। 

আমাদের VEXcode VR প্রকল্পের তুলনা, ডান পাশে Wait Until ব্লকটিকে একটি সুইচ ব্লকে রূপান্তরিত করা হয়েছে। নতুন সুইচ ব্লকটি পাইথনে 'while not front_distance.get_distance(MM) < 50: wait(5, msec)' পড়বে।

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