Skip to main content

পাঠ ২: [অপেক্ষা করুন] ব্লক ব্যবহার করা

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

ওয়াল মেজ খেলার মাঠের পাশের দৃশ্য যেখানে ভিআর রোবটটি সরাসরি দেয়ালের সামনে অবস্থিত, যা দেখায় যে দেয়ালগুলি ত্রিমাত্রিক এবং রোবটটি তাদের সাথে সংঘর্ষে লিপ্ত হতে পারে।

শেখার ফলাফল

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

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

  • VEXcode VR তে একটি নতুন প্রকল্প শুরু করুন এবং প্রকল্পটির নাম দিন Unit4Lesson2
VEXcode VR টুলবারের মাঝখানে প্রকল্পের নামের বাক্স, "প্লেগ্রাউন্ড নির্বাচন করুন" বোতামের বাম দিকে একটি লাল বাক্স দিয়ে হাইলাইট করা।

[অপেক্ষা করুন] ব্লক

[Wait until] ব্লকটি একটি কন্ট্রোল ব্লক যা বুলিয়ান শর্ত গ্রহণ করে। [অপেক্ষা করুন] ব্লকগুলি বারবার একটি বুলিয়ান অবস্থা পরীক্ষা করে এবং প্রকল্প প্রবাহ নিয়ন্ত্রণ করে। [Wait until] ব্লকের কন্ডিশন TRUE হিসেবে রিপোর্ট না করা পর্যন্ত একটি প্রজেক্ট স্ট্যাকের পরবর্তী ব্লকে যাবে না। [অপেক্ষা না করা পর্যন্ত] ব্লকগুলি [ড্রাইভ] বা [টার্ন] এর মতো নন-ওয়েটিং ব্লকের সাথে একত্রে ব্যবহৃত হয়।

আপনার জ্ঞাতার্থে

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

[ড্রাইভ ফর] এবং [টার্ন ফর] এর মতো কিছু ব্লক অপেক্ষাকারী বা অ-অপেক্ষাকারী ব্লক হতে পারে। ব্লকের তীরচিহ্নটি নির্বাচন করলে ব্লকটি অপেক্ষা থেকে অ-অপেক্ষা ব্লকে পরিণত হবে।

ব্লকের ডানদিকে তীরচিহ্ন দিয়ে ব্লকের জন্য একটি ড্রাইভ দেখানো হয়েছে, যেখানে ব্লকটি বন্ধ এবং খোলা রয়েছে। উপরে, একটি ড্রাইভ ফর ব্লক লেখা আছে "ড্রাইভ ফরওয়ার্ড ফর 200 মিমি"। নীচে, একই ব্লকটি 200 মিমি এগিয়ে যাওয়ার জন্য প্রসারিত করা হয়েছে এবং অপেক্ষা করবেন না।

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

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

সমতুল্য সুইচ ব্লকটি ড্রাইভ ফর কমান্ডের সাথে অপেক্ষা এবং অ-অপেক্ষা কমান্ড হিসাবে দেখানো হয়েছে। উপরে, সুইচ ব্লকে পাইথন কমান্ডটি drivetrain dot drive_for (FORWARD, 200, MM) পড়ে। নীচে, একই কমান্ডটি ড্রাইভট্রেন ডট ড্রাইভ _ পড়ার জন্য প্রসারিত করা হয়েছে (FORWARD, 200, MM, wait = false)।

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

    একটি নতুন VEXcode VR প্রকল্প যেখানে একটি When started ব্লক রয়েছে যার সাথে একটি ড্রাইভ ব্লক সংযুক্ত এবং ফরোয়ার্ডে সেট করা আছে।
  • [ড্রাইভ] ব্লকের নিচে একটি [অপেক্ষা করুন] ব্লক সংযুক্ত করুন।

    স্ট্যাকের নীচে ব্লক যোগ করার জন্য অপেক্ষা করার সময় একই প্রকল্প। "Wait until block" এর প্যারামিটারটি খালি থাকে।
  • ব্লকটি বুলিয়ান শর্ত স্বীকার না করা পর্যন্ত অপেক্ষা করুন। এই প্রকল্পটি বাম্পার সেন্সর ব্যবহার করবে Wall Maze Playgroundমধ্য দিয়ে চালাতে। <Pressing bumper> বুলিয়ান ব্লকটি [অপেক্ষা করুন] ব্লকে টেনে আনুন।

    একই প্রকল্পে, "Wait until" ব্লকের প্যারামিটারে একটি বাম্পার প্রেসড ব্লক যোগ করা হয়েছে। প্রকল্পটি এখন লেখা আছে "শুরু হলে, সামনের দিকে গাড়ি চালান, বাম বাম্পার চাপা না হওয়া পর্যন্ত অপেক্ষা করুন।"
  • একটি [ড্রাইভিং বন্ধ করুন] ব্লকে টেনে আনুন এবং এটিকে প্রকল্পে যোগ করুন।

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

    এই পাঠের VEXcode VR প্রকল্পটি প্রকল্পের প্রবাহ দেখানোর জন্য ভেঙে ফেলা হয়েছে। যখন শুরু হয় ব্লকের পরে ড্রাইভ ফরোয়ার্ড ব্লক আসে। "ওয়েট না হওয়া পর্যন্ত" বাম্পার চাপানো ব্লকে ড্রাইভ ফরোয়ার্ড ব্লক থেকে নীচের দিকে একটি সোনালী তীর নির্দেশ করে। ব্লকের ডানদিকে দুটি বাঁকা লাল তীর রয়েছে যা একটি বৃত্তাকার গতি নির্দেশ করে এবং "চাপা হয়নি (মিথ্যা)" শব্দগুলি দেখায় যে রোবটটি এগিয়ে গেলে এবং বাম্পার সুইচটি চাপ না দিলে কী ঘটে। "ওয়াট অবধি" ব্লকের নীচে, "প্রেসড (সত্য)" শব্দ সহ স্টপ ড্রাইভিং ব্লকের দিকে নির্দেশিত একটি সবুজ তীর নির্দেশ করে যে বাম্পার সুইচ টিপলে প্রকল্পটি স্টপ ড্রাইভিং ব্লকে চলে যাবে।

    আপনার তথ্যের জন্য

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

    এই পাঠের VEXcode VR প্রকল্পটিতে "Wait until" ব্লকের চারপাশে একটি লাল কলআউট বাক্স রয়েছে, যা নির্দেশ করে যে এটি একটি "Waiting Block"।

     

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

    এটি হল সুইচ ব্লক যেখানে [Wait until] কমান্ডটি <Bumper pressed>সহ রয়েছে।  বুলিয়ান রিপোর্টার।

    উপরের মতই VEXcode VR প্রকল্প, কিন্তু Wait until ব্লকের পরিবর্তে একটি Switch ব্লক ব্যবহার করা হয়েছে। সুইচ ব্লকের পাইথন কমান্ডটি প্রথম লাইনে while not left_bumper.pressed(): পড়ে। তারপর পাইথন ব্লকের নিচে ইন্ডেন্ট করলে wait (5, msec) পড়বে।

    while not left_bumper.pressed():হল Python কমান্ড যা পরীক্ষা করে যে বাম বাম্পারটি বর্তমানে চাপা হচ্ছে কিনা।

    wait (5, MSEC)হল একটি Python কমান্ড যা চেকের এক্সিকিউশনকে 5 মিলিসেকেন্ডের জন্য থামায় (MSEC), তাই প্রকল্পটি পরীক্ষা করে যে বাম বাম্পারটি প্রতি 5 MSEC-তে চাপা হয়েছে কিনা। এই কোডের লাইনটি কোডের প্রথম লাইনের নীচে ইন্ডেন্ট করা হয়েছে কারণ এই কমান্ডটি এমন আচরণ যা শর্তটি (এই ক্ষেত্রে, বাম বাম্পার টিপে) পূরণ না হওয়া পর্যন্ত পুনরাবৃত্তি হবে।

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

    বাম বাম্পারটি চাপা দিলে, রোবটটি গাড়ি চালানো বন্ধ করে দেবে।

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