পাঠ ২: [অপেক্ষা করুন] ব্লক ব্যবহার করা
এই পাঠে, আপনি বাম্পার সেন্সর এবং [অপেক্ষা করুন] ব্লক ব্যবহার করে একটি প্রকল্প তৈরি করবেন। মিনি-চ্যালেঞ্জে, আপনি ওয়াল মেজের শুরু থেকে 'A' অক্ষর পর্যন্ত নেভিগেট করার জন্য এই দক্ষতাগুলি প্রয়োগ করবেন।

শেখার ফলাফল
- ব্লকের আচরণ সম্পূর্ণ না হলেও, অপেক্ষমাণ নয় এমন ব্লকগুলিতে স্ট্যাকটি অব্যাহত রয়েছে কিনা তা চিহ্নিত করুন।
- চিহ্নিত করুন যে একটি অপেক্ষা ব্লক স্ট্যাকটিকে থামিয়ে দেয় যতক্ষণ না সেই ব্লকের আচরণ সম্পূর্ণ হয়।
- প্রকল্পের সম্পাদনের হাইলাইটিং অপেক্ষা বনাম অ-অপেক্ষা ব্লকগুলিকে কল্পনা করে কিনা তা চিহ্নিত করুন।
- [Wait until] ব্লকটি একটি কন্ট্রোল ব্লক যা বুলিয়ান মান গ্রহণ করে তা চিহ্নিত করুন।
- [Wait until] ব্লক বারবার একটি বুলিয়ান অবস্থা পরীক্ষা করবে এবং শর্তটি TRUE রিপোর্ট না করা পর্যন্ত পরবর্তী ব্লকে যাবে না তা চিহ্নিত করুন।
- সেন্সরের অবস্থা পরীক্ষা করার জন্য [অপেক্ষা না করা পর্যন্ত] ব্লকটি একটি নন-ওয়েটিং ব্লকের (যেমন ড্রাইভ) সাথে ব্যবহৃত হচ্ছে কিনা তা চিহ্নিত করুন।
- [অপেক্ষা না করা পর্যন্ত] ব্লকে <Pressing bumper> ব্লকটি TRUE অথবা FALSE মান রিপোর্ট করছে কিনা তা চিহ্নিত করুন।
- [ড্রাইভ ফর] এবং [টার্ন ফর] ব্লকগুলি কীভাবে বিশেষ ব্লক যা অপেক্ষারত বা অ-অপেক্ষারত হতে পারে তা চিহ্নিত করুন।
- বাম্পার সেন্সর টিপে না দেওয়া পর্যন্ত VR রোবট ড্রাইভ ফরোয়ার্ড করে এমন একটি প্রকল্প কীভাবে তৈরি করবেন তা বর্ণনা করুন।
প্রকল্পের নাম দিন এবং সংরক্ষণ করুন
- VEXcode VR তে একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit4Lesson2।

[অপেক্ষা করুন] ব্লক
[Wait until] ব্লকটি একটি কন্ট্রোল ব্লক যা বুলিয়ান শর্ত গ্রহণ করে। [অপেক্ষা করুন] ব্লকগুলি বারবার একটি বুলিয়ান অবস্থা পরীক্ষা করে এবং প্রকল্প প্রবাহ নিয়ন্ত্রণ করে। [Wait until] ব্লকের কন্ডিশন TRUE হিসেবে রিপোর্ট না করা পর্যন্ত একটি প্রজেক্ট স্ট্যাকের পরবর্তী ব্লকে যাবে না। [অপেক্ষা না করা পর্যন্ত] ব্লকগুলি [ড্রাইভ] বা [টার্ন] এর মতো নন-ওয়েটিং ব্লকের সাথে একত্রে ব্যবহৃত হয়।
আপনার জ্ঞাতার্থে
অ-অপেক্ষা এবং অপেক্ষা ব্লকগুলি নির্ধারণ করে যে পরবর্তী ব্লক কখন একটি আচরণ শুরু করবে। [Drive for] এবং [Turn for] এর মতো অপেক্ষাকারী ব্লকগুলি স্ট্যাকের পরবর্তী ব্লকে যাওয়ার আগে তাদের আচরণ সম্পূর্ণ করে। [ড্রাইভ] এবং [টার্ন] এর মতো নন-ওয়েটিং ব্লকগুলি স্ট্যাকের পরবর্তী ব্লকে যেতে থাকে, এমনকি যদি নন-ওয়েটিং ব্লকের আচরণ সম্পূর্ণ না হয়।
[ড্রাইভ ফর] এবং [টার্ন ফর] এর মতো কিছু ব্লক অপেক্ষাকারী বা অ-অপেক্ষাকারী ব্লক হতে পারে। ব্লকের তীরচিহ্নটি নির্বাচন করলে ব্লকটি অপেক্ষা থেকে অ-অপেক্ষা ব্লকে পরিণত হবে।

সুইচ ব্লক ব্যবহার করা
সুইচ নন-ওয়েটিং ব্লক ব্লকের শেষে একটি "wait=False" প্যারামিটার যোগ করে। "wait=False" হল Python কমান্ড যা ব্লককে অপেক্ষা না করতে এবং স্ট্যাকের পরবর্তী ব্লকগুলিতে যেতে বলে।

-
[ড্রাইভ] নন-ওয়েটিং ব্লকটিকে কর্মক্ষেত্রে টেনে আনুন।

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

-
ব্লকটি বুলিয়ান শর্ত স্বীকার না করা পর্যন্ত অপেক্ষা করুন। এই প্রকল্পটি বাম্পার সেন্সর ব্যবহার করবে Wall Maze Playgroundমধ্য দিয়ে চালাতে। <Pressing bumper> বুলিয়ান ব্লকটি [অপেক্ষা করুন] ব্লকে টেনে আনুন।

-
একটি [ড্রাইভিং বন্ধ করুন] ব্লকে টেনে আনুন এবং এটিকে প্রকল্পে যোগ করুন।

- Wall Maze খেলার মাঠ চালু করুন যদি এটি ইতিমধ্যে খোলা না থাকে এবং প্রকল্পটি চালান।
- ওয়াল মেজের শুরু থেকেই ভিআর রোবটের ড্রাইভ দেখুন এবং বাম্পার সেন্সরটি দেয়ালে চাপ দিলে থামুন।
-
[ড্রাইভ] ব্লকটি VR রোবটকে <Pressing bumper> ব্লক দিয়ে বাম্পার সেন্সরের অবস্থা পরীক্ষা করার সময় সামনের দিকে গাড়ি চালিয়ে যেতে দেয়। একবার <Pressing bumper> সত্য হিসাবে রিপোর্ট করলে, VR রোবট স্ট্যাকের পরবর্তী ব্লকে চলে যাবে এবং গাড়ি চালানো বন্ধ করবে।

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

সুইচ ব্লক ব্যবহার করা
এটি হল সুইচ ব্লক যেখানে [Wait until] কমান্ডটি <Bumper pressed>সহ রয়েছে।
বুলিয়ান রিপোর্টার। 
while not left_bumper.pressed():হল Python কমান্ড যা পরীক্ষা করে যে বাম বাম্পারটি বর্তমানে চাপা হচ্ছে কিনা। wait (5, MSEC)হল একটি Python কমান্ড যা চেকের এক্সিকিউশনকে 5 মিলিসেকেন্ডের জন্য থামায় (MSEC), তাই প্রকল্পটি পরীক্ষা করে যে বাম বাম্পারটি প্রতি 5 MSEC-তে চাপা হয়েছে কিনা। এই কোডের লাইনটি কোডের প্রথম লাইনের নীচে ইন্ডেন্ট করা হয়েছে কারণ এই কমান্ডটি এমন আচরণ যা শর্তটি (এই ক্ষেত্রে, বাম বাম্পার টিপে) পূরণ না হওয়া পর্যন্ত পুনরাবৃত্তি হবে। VEXcode VR-তে, একটি wait কমান্ড সর্বদা একটি শর্তসাপেক্ষ লুপের সাথে যোগ করা হয়। VEXcode VR প্ল্যাটফর্মের ওয়েব-ভিত্তিক প্রকৃতির কারণে, wait কমান্ডের উদ্দেশ্য হল VEXcode VR যাতে প্রকল্পটি সঠিকভাবে পরিচালনা করতে পারে তা নিশ্চিত করা। কন্ডিশনাল লুপ ব্যবহার করার সময় wait কমান্ডটি কখনই মুছে ফেলা উচিত নয়, কারণ আপনার প্রকল্পটি ইচ্ছাকৃতভাবে নাও চলতে পারে। বাম বাম্পারটি চাপা দিলে, রোবটটি গাড়ি চালানো বন্ধ করে দেবে।
এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।