पाठ 2: [Wait until] ब्लॉक का उपयोग करना
इस पाठ में, आप बम्पर सेंसर और [Wait until] ब्लॉक का उपयोग करके एक प्रोजेक्ट बनाएंगे। इस मिनी-चैलेंज में, आपको इन कौशलों का उपयोग करके वॉल मेज़ के आरंभ से अक्षर 'A' तक पहुंचना होगा।

सीखने के परिणाम
- यह पहचानें कि नॉन-वेटिंग ब्लॉक में स्टैक तब भी जारी रहता है, भले ही ब्लॉक का व्यवहार अभी पूरा न हुआ हो।
- यह पहचानें कि प्रतीक्षा कर रहा ब्लॉक स्टैक को तब तक रोक देता है जब तक कि उस ब्लॉक का कार्य पूरा नहीं हो जाता।
- यह पहचानें कि परियोजना के निष्पादन को उजागर करने से प्रतीक्षा कर रहे और प्रतीक्षा न कर रहे ब्लॉकों को दर्शाया जा सकता है।
- यह पहचानें कि [Wait until] ब्लॉक एक कंट्रोल ब्लॉक है जो बूलियन मान स्वीकार करता है।
- यह पहचानें कि [Wait until] ब्लॉक बार-बार एक बूलियन स्थिति की जांच करेगा और जब तक स्थिति TRUE रिपोर्ट नहीं करती तब तक अगले ब्लॉक पर नहीं जाएगा।
- यह पहचानें कि [Wait until] ब्लॉक का उपयोग सेंसर की स्थिति की जांच करने के लिए गैर-प्रतीक्षा करने वाले ब्लॉक (जैसे ड्राइव) के साथ किया जाता है।
- यह पहचानें कि [Wait until] ब्लॉक में <Pressing bumper> ब्लॉक TRUE या FALSE मान रिपोर्ट करता है।
- यह पहचानें कि [ड्राइव फॉर] और [टर्न फॉर] ब्लॉक विशेष ब्लॉक हैं जो प्रतीक्षा कर सकते हैं या प्रतीक्षा नहीं कर सकते हैं।
- एक ऐसा प्रोजेक्ट बनाने का तरीका बताएं जिसमें वीआर रोबोट तब तक आगे बढ़ता रहे जब तक बम्पर सेंसर को दबाया न जाए।
प्रोजेक्ट का नाम दें और उसे सेव करें
- VEXcode VR में एक नया प्रोजेक्ट शुरू करें और प्रोजेक्ट का नाम Unit4Lesson2 रखें।

[तब तक प्रतीक्षा करें] ब्लॉक
[Wait until] ब्लॉक एक कंट्रोल ब्लॉक है जो बूलियन शर्तों को स्वीकार करता है। [Wait until] ब्लॉक बार-बार एक बूलियन स्थिति की जांच करते हैं और प्रोजेक्ट प्रवाह को नियंत्रित करते हैं। जब तक [Wait until] ब्लॉक में दी गई शर्त TRUE नहीं हो जाती, तब तक कोई प्रोजेक्ट स्टैक में अगले ब्लॉक पर नहीं जाएगा। [Wait until] ब्लॉक का उपयोग [Drive] या [Turn] जैसे गैर-प्रतीक्षा करने वाले ब्लॉक के साथ किया जाता है।
आपकी जानकारी के लिए
नॉन-वेटिंग और वेटिंग ब्लॉक यह निर्धारित करते हैं कि अगला ब्लॉक कब कोई व्यवहार शुरू करेगा। [ड्राइव फॉर] और [टर्न फॉर] जैसे प्रतीक्षा करने वाले ब्लॉक, स्टैक में अगले ब्लॉक पर जाने से पहले अपने व्यवहार को पूरा करते हैं। [ड्राइव] और [टर्न] जैसे नॉन-वेटिंग ब्लॉक, स्टैक में अगले ब्लॉक पर जाना जारी रखते हैं, भले ही नॉन-वेटिंग ब्लॉक का व्यवहार पूरा न हुआ हो।
कुछ ब्लॉक, जैसे [Drive for] और [Turn for], प्रतीक्षा करने वाले या प्रतीक्षा न करने वाले ब्लॉक हो सकते हैं। ब्लॉक पर मौजूद तीर का चयन करने से ब्लॉक प्रतीक्षा स्थिति से गैर-प्रतीक्षा स्थिति में बदल जाएगा।

स्विच ब्लॉक का उपयोग करना
स्विच नॉन-वेटिंग ब्लॉक ब्लॉक के अंत में "wait=False" पैरामीटर जोड़ता है। "wait=False" पायथन कमांड है जो ब्लॉक को प्रतीक्षा न करने और स्टैक में अगले ब्लॉक पर जाने के लिए कहता है।

-
[ड्राइव] नॉन-वेटिंग ब्लॉक को वर्कस्पेस में ड्रैग करें।

-
[ड्राइव] ब्लॉक के नीचे एक [वेट अंटिल] ब्लॉक संलग्न करें।

-
[Wait until] ब्लॉक बूलियन शर्तों को स्वीकार करता है। यह प्रोजेक्ट बम्पर सेंसर का उपयोग करके वॉल मेज़ प्लेग्राउंड से होकर गुजरेगा। <Pressing bumper> बूलियन ब्लॉक को [Wait until] ब्लॉक में खींचें।

-
[Stop driving] ब्लॉक को खींचकर प्रोजेक्ट में जोड़ें।

- यदि वॉल मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे लॉन्च करें और प्रोजेक्ट चलाएं।
- वीआर रोबोट को वॉल मेज़ के शुरुआती बिंदु से चलते हुए देखें और जब बम्पर सेंसर दीवार से दब जाए तो उसे रुकते हुए देखें।
-
[ड्राइव] ब्लॉक वीआर रोबोट को <Pressing bumper> ब्लॉक के साथ बम्पर सेंसर की स्थिति की जांच करते हुए आगे बढ़ते रहने की अनुमति देता है। एक बार जब <Pressing bumper> TRUE के रूप में रिपोर्ट करता है, तो VR रोबोट स्टैक में अगले ब्लॉक पर चला जाएगा और चलना बंद कर देगा।

आपकी जानकारी के लिए
प्रतीक्षा कर रहे और प्रतीक्षा न कर रहे ब्लॉकों के बीच अंतर को समझने के लिए, VEXcode VR में कोड निष्पादन हाइलाइटिंग फ़ंक्शन देखें। इस प्रोजेक्ट की शुरुआत में, शर्त पूरी होने तक [Wait until] ब्लॉक के चारों ओर हरी हाइलाइट दिखाई देगी। ऐसा इसलिए है क्योंकि [Wait until] ब्लॉक एक प्रतीक्षा ब्लॉक है। हरे रंग से हाइलाइट किए गए हिस्से उन ब्लॉकों को छोड़ देंगे जिनमें प्रतीक्षा नहीं हो रही है क्योंकि ये कमांड तेजी से निष्पादित होते हैं।

स्विच ब्लॉक का उपयोग करना
यह स्विच ब्लॉक है जिसमें [Wait until] कमांड है और <Bumper pressed> है।
बूलियन रिपोर्टर। 
while not left_bumper.pressed():यह पायथन कमांड है जो जांच करता है कि क्या बायां बम्पर वर्तमान में दबाया जा रहा है। wait (5, MSEC)एक पायथन कमांड है जो 5 मिलीसेकंड (MSEC) के लिए चेक के निष्पादन को रोक देता है, इसलिए प्रोजेक्ट हर 5 MSEC में जांच करता है कि बायां बम्पर दबाया गया है या नहीं। कोड की यह पंक्ति पहली पंक्ति के नीचे इंडेंट की गई है क्योंकि यह कमांड वह व्यवहार है जो शर्त (इस मामले में, बायां बम्पर दबाया जाना) पूरी होने तक दोहराया जाएगा। VEXcode VR में, एक सशर्त लूप के साथ हमेशा wait कमांड जोड़ा जाता है। वेट कमांड का उद्देश्य यह सुनिश्चित करना है कि VEXcode VR प्लेटफॉर्म की वेब-आधारित प्रकृति के कारण, VEXcode VR प्रोजेक्ट को इच्छानुसार ठीक से चला सके। कंडीशनल लूप का उपयोग करते समय wait कमांड को कभी भी डिलीट नहीं करना चाहिए, क्योंकि इससे आपका प्रोजेक्ट इच्छानुसार नहीं चल पाएगा। बाएं बम्पर को दबाते ही रोबोट चलना बंद कर देगा।
इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन चुनें।