मुख्य सामग्री पर जाएं

पाठ 3: [If then] ब्लॉक का उपयोग करना

डिस्क मेज़ चैलेंज में, वीआर रोबोट यह देखने के लिए फ्रंट आई सेंसर की स्थिति की जांच कर रहा है कि कौन सा रंग रिपोर्ट किया जा रहा है। प्रत्येक रंग वीआर रोबोट द्वारा किए जाने वाले एक अलग व्यवहार से मेल खाता है।

VEXcode VR If Then C ब्लॉक जिसमें 'फ्रंट आई डिटेक्ट्स रेड?' नामक एक बूलियन पैरामीटर है।
  • एक नया प्रोजेक्ट शुरू करें और उसका नाम Unit7Lesson3 रखें।

    VEXcode VR टूलबार में 'प्रोजेक्ट का नाम' बटन लाल बॉक्स में हाइलाइट किया गया है, जो 'प्लेग्राउंड चुनें' बटन के बाईं ओर स्थित है। इस प्रोजेक्ट का नाम यूनिट 7 लेसन 3 रखा गया है।
  • [If then] ब्लॉक को वर्कस्पेस में खींचें और उसे [When started] ब्लॉक से जोड़ दें।

    VEXcode VR ब्लॉक प्रोग्राम में एक When Started ब्लॉक और एक खाली If Then C ब्लॉक होता है।

    आपकी जानकारी के लिए

    [If then] ब्लॉक एक C ब्लॉक है जो इनपुट के रूप में बूलियन रिपोर्टर ब्लॉक स्वीकार करता है। पाठ 2 में डिस्क भूलभुलैया को हल करते समय देखे गए पैटर्न का उपयोग करके, एक ऐसी परियोजना बनाई जा सकती है जिसमें वीआर रोबोट यह निर्णय लेता है कि स्थिति TRUE या FALSE के रूप में रिपोर्ट की गई है या नहीं।

    VEXcode VR If Then C ब्लॉक जिसमें लाल बॉक्स में बूलियन पैरामीटर स्पेस को हाइलाइट किया गया है।

    [If then] ब्लॉक एक प्रोजेक्ट में केवल एक बार चलेगा। इस उदाहरण में, यदि कोई हरी वस्तु पाई जाती है, तो फ्रंट आई सेंसर TRUE रिपोर्ट करेगा और C ब्लॉक के अंदर दिए गए कमांड को निष्पादित करेगा - 90 डिग्री दाएं मुड़ें। यदि कोई हरी वस्तु नहीं पाई जाती है, तो प्रोजेक्ट स्टैक में अगले कमांड पर चला जाएगा।

    VEXcode VR ब्लॉक प्रोजेक्ट करता है जो फ्रंट आई द्वारा हरे रंग का पता लगाने पर दाईं ओर मुड़ जाता है। प्रोजेक्ट में लिखा है: शुरू करते समय, यदि सामने वाली आंख को हरा रंग दिखाई दे, तो 90 डिग्री दाएं मुड़ें। इफ स्टेटमेंट के बाहर एक स्टॉप ड्राइविंग ब्लॉक है।

    स्विच ब्लॉक का उपयोग करना 


    नीचे दी गई छवि इस पाठ के उदाहरण प्रोजेक्ट के लिए स्विच [इफ देन] ब्लॉक स्टेटमेंट को दर्शाती है। 

    वही VEXcode VR ब्लॉक्स प्रोजेक्ट, लेकिन इसमें स्विच ब्लॉक्स भी शामिल हैं, जो फ्रंट आई द्वारा हरे रंग का पता लगाने पर दाईं ओर मुड़ जाते हैं। यह प्रोजेक्ट 'When started' ब्लॉक से शुरू होता है और इसके बाद 'If Then' ब्लॉक के C संस्करण का एक स्विच ब्लॉक आता है। पायथन कोड में लिखा है 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. इफ स्टेटमेंट के बाहर एक स्टॉप ड्राइविंग ब्लॉक है।

    नीचे दिए गए प्रोजेक्ट में उन्हीं कमांड्स को एक स्विच ब्लॉक में परिवर्तित किया गया है।  

    कोड की पहली पंक्ति, if front_eye.detect(GREEN): , वह सशर्त लूप है जो जांच करता है कि फ्रंट आई सेंसर हरे रंग का पता लगाता है या नहीं। ध्यान दें कि इस पंक्ति के अंत में एक कोलन (:) होना चाहिए। 

    कोड की दूसरी पंक्ति, drivetrain.turn_for(RIGHT, 90, DEGREES) रोबोट को बताती है कि जब फ्रंट आई सेंसर हरे रंग का पता लगाता है तो उसे 90 डिग्री दाएं मुड़ना है। यह पंक्ति डिफ़ॉल्ट रूप से 4 स्पेसपर इंडेंट की गई है क्योंकि यह विशिष्ट व्यवहार है जो फ्रंट आई सेंसर द्वारा हरे रंग का पता लगाने पर किया जाएगा। 

    वही VEXcode VR ब्लॉक्स प्रोजेक्ट, लेकिन इसमें स्विच ब्लॉक्स भी शामिल हैं, जो फ्रंट आई द्वारा हरे रंग का पता लगाने पर दाईं ओर मुड़ जाते हैं। यह प्रोजेक्ट 'When started' ब्लॉक से शुरू होता है और इसके बाद 'If Then' ब्लॉक के C संस्करण का एक स्विच ब्लॉक आता है। पायथन कोड में लिखा है 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. इफ स्टेटमेंट के बाहर एक स्टॉप ड्राइविंग ब्लॉक है।

  • एक <Color sensing> ब्लॉक को वर्कस्पेस में [If then] ब्लॉक के षट्भुजाकार इनपुट में खींचें।

    VEXcode VR ब्लॉक प्रोजेक्ट जो डिस्क के रंग का पता लगाने के लिए एक if स्टेटमेंट का उपयोग करता है। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक कमेंट ब्लॉक आता है जिसमें लिखा होता है 'यदि फ्रंट आई को हरा सिग्नल मिले तो दाएं मुड़ें'। अंत में, एक खाली इफ देन ब्लॉक है जिसमें कलर सेंसिंग ब्लॉक का एक बूलियन पैरामीटर है जो पढ़ता है 'फ्रंट आई लाल रंग का पता लगाता है?'।
  • <Color sensing> ब्लॉक के पैरामीटर को 'हरा' में बदलें।

    VEXcode VR ब्लॉक प्रोजेक्ट जो एक if स्टेटमेंट का उपयोग करके हरे रंग की डिस्क का पता लगाता है। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक कमेंट ब्लॉक आता है जिसमें लिखा होता है 'यदि फ्रंट आई को हरा सिग्नल मिले तो दाएं मुड़ें'। अंत में, एक खाली इफ देन ब्लॉक है जिसमें कलर सेंसिंग ब्लॉक का एक बूलियन पैरामीटर है जो पढ़ता है 'फ्रंट आई हरे रंग का पता लगाता है?'। रंग बदलने के लिए ड्रॉपडाउन मेनू खुला है, जिससे आप रंग को लाल से हरे रंग में बदल सकते हैं।
  • जब फ्रंट आई सेंसर एक हरी डिस्क का पता लगाता है, तो वीआर रोबोट को डिस्क भूलभुलैया को हल करना शुरू करने के लिए 90 डिग्री दाएं मुड़ने की आवश्यकता होगी। [Turn for] ब्लॉक को [If then] ब्लॉक में ड्रैग करें।

    VEXcode VR ब्लॉक्स प्रोजेक्ट जो एक if स्टेटमेंट का उपयोग करके हरे रंग की डिस्क का पता लगाता है और फिर दाईं ओर मुड़ जाता है। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक कमेंट ब्लॉक आता है जिसमें लिखा होता है 'यदि फ्रंट आई को हरा सिग्नल मिले तो दाएं मुड़ें'। अंत में, एक इफ देन ब्लॉक है जिसमें कलर सेंसिंग ब्लॉक का एक बूलियन पैरामीटर है जो 'फ्रंट आई डिटेक्ट्स ग्रीन?' पढ़ता है, और इफ कंटेनर के अंदर एक टर्न राइट फॉर 90 डिग्री ब्लॉक है जो बूलियन के सही होने पर ट्रिगर होगा।
  • डिस्क मेज़ में तीनों रंगों (हरा, नीला और लाल) के लिए एक और [यदि तब] ब्लॉक जोड़ने के लिए इन्हीं चरणों का पालन करें। प्रत्येक रंग एक अलग व्यवहार से जुड़ा होता है। [If then] ब्लॉक के अंदर के ब्लॉक को अपेक्षित व्यवहार से मेल खाना होगा। प्रोजेक्ट में निम्नलिखित ब्लॉक जोड़ें। जब वीआर रोबोट 'नीला' रंग का पता लगाएगा, तो वीआर रोबोट 90 डिग्री बाईं ओर मुड़ जाएगा।

    वही VEXcode VR ब्लॉक प्रोजेक्ट पहले जैसा ही है, लेकिन इसमें एक अतिरिक्त if स्टेटमेंट जोड़ा गया है ताकि नीली डिस्क होने पर बाईं ओर मुड़ जाए। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक 'इफ देन' ब्लॉक होता है जिसमें 'कलर सेंसिंग' ब्लॉक का एक बूलियन पैरामीटर होता है जो 'फ्रंट आई डिटेक्ट्स ग्रीन?' पढ़ता है और 'टर्न राइट फॉर 90 डिग्री' ब्लॉक 'इफ' कंटेनर के अंदर होता है। अंत में, वही इफ ब्लॉक और टर्न ब्लॉक स्टैक है, लेकिन इसे बदलकर यह कर दिया गया है कि यदि नीला रंग पाया जाता है तो यह 90 डिग्री बाईं ओर मुड़ जाए।
  • जब वीआर रोबोट भूलभुलैया के अंत तक पहुंच जाएगा, तो वह 'लाल' रंग का पता लगाएगा।

    वीआर डिस्क मेज़ प्लेग्राउंड में एक वीआर रोबोट रुका हुआ है और एक लाल डिस्क की ओर देख रहा है।
  • वीआर रोबोट को रोकने के लिए, एक और [इफ देन] ब्लॉक जोड़ने की आवश्यकता है जिसमें यह निर्देश हो कि वीआर रोबोट द्वारा 'लाल' का पता लगाने पर क्या करना है। प्रोजेक्ट में निम्नलिखित ब्लॉक जोड़ें।

    वही VEXcode VR ब्लॉक प्रोजेक्ट, लेकिन इसमें एक अतिरिक्त if स्टेटमेंट जोड़ा गया है ताकि लाल डिस्क होने पर ड्राइविंग बंद हो जाए। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक 'इफ देन' ब्लॉक होता है जिसमें 'कलर सेंसिंग' ब्लॉक का एक बूलियन पैरामीटर होता है जो 'फ्रंट आई डिटेक्ट्स ग्रीन?' पढ़ता है और 'टर्न राइट फॉर 90 डिग्री' ब्लॉक 'इफ' कंटेनर के अंदर होता है। इसके बाद वही इफ ब्लॉक और टर्न ब्लॉक स्टैक है, लेकिन इसे इस तरह से बदला गया है कि यदि नीला रंग पाया जाता है तो यह 90 डिग्री बाएं मुड़ जाए। अंत में, वही इफ ब्लॉक और टर्न ब्लॉक स्टैक का उपयोग किया जाता है, लेकिन इसे बदलकर "लाल रंग का पता चलने पर गाड़ी चलाना बंद कर दें" कर दिया जाता है।
  • वीआर रोबोट 'none' मान का उपयोग करके यह निर्णय भी ले सकता है कि यदि उसे कोई रंग दिखाई नहीं देता है तो क्या करना है। डिस्क मेज़ के शुरुआती बिंदु पर, वीआर रोबोट किसी भी रंग का पता नहीं लगाता है।

    वीआर प्लेग्राउंड का दृश्य जिसमें डैशबोर्ड खुला हुआ है और एक लाल बॉक्स रोबोट के फ्रंट आई सेंसिंग मानों को हाइलाइट कर रहा है। वर्तमान 'ऑब्जेक्ट' का मान गलत है, और वर्तमान 'कलर' का मान शून्य है।
  • क्योंकि फ्रंट आई सेंसर डिस्क मेज़ की शुरुआत में किसी रंग का पता नहीं लगा पाता है, इसलिए वीआर रोबोट को तब तक आगे बढ़ना होगा जब तक कि वह हरी डिस्क का पता न लगा ले। एक और [If then] ब्लॉक जोड़ा जा सकता है ताकि VR रोबोट को यह निर्देश दिया जा सके कि रंग का पता न चलने पर क्या करना है।

    VEXcode VR कलर सेंसिंग ब्लॉक, जो 'फ्रंट आई डिटेक्ट्स नन?' पढ़ता है। एक ड्रॉपडाउन मेनू खुला है जिससे पता चलता है कि उपयोगकर्ता लक्ष्य रंग को 'शून्य' में कैसे बदल सकता है।
  • प्रोजेक्ट में निम्नलिखित ब्लॉक जोड़ें। जब वीआर रोबोट किसी भी रंग का पता नहीं लगाता है, तो वीआर रोबोट आगे की ओर बढ़ेगा।

    वही VEXcode VR ब्लॉक प्रोजेक्ट पहले की तरह ही है, लेकिन इसमें एक अतिरिक्त if स्टेटमेंट जोड़ा गया है ताकि यदि कोई डिस्क डिटेक्ट न हो तो प्रोजेक्ट आगे बढ़ सके। यह 'व्हेन स्टार्टेड' ब्लॉक से शुरू होता है और फिर एक 'इफ देन' ब्लॉक होता है जिसमें 'कलर सेंसिंग' ब्लॉक का एक बूलियन पैरामीटर होता है जो 'फ्रंट आई डिटेक्ट्स ग्रीन?' पढ़ता है और 'टर्न राइट फॉर 90 डिग्री' ब्लॉक 'इफ' कंटेनर के अंदर होता है। इसके बाद वही इफ ब्लॉक और टर्न ब्लॉक स्टैक है, लेकिन इसे इस तरह से बदला गया है कि यदि नीला रंग पाया जाता है तो यह 90 डिग्री बाएं मुड़ जाए। इसके बाद, उसी इफ ब्लॉक और टर्न ब्लॉक स्टैक का उपयोग किया जाता है, लेकिन इसे बदलकर "लाल रंग का पता चलने पर गाड़ी चलाना बंद करें" कर दिया जाता है। अंत में, यदि ब्लॉक और टर्न ब्लॉक स्टैक का उपयोग किया जाता है, तो रंग का पता न चलने पर इसे ड्राइव फॉरवर्ड में बदल दिया जाता है।
  • वीआर रोबोट के पास अब आई सेंसर द्वारा पता लगाए गए प्रत्येक रंग के लिए निर्देश मौजूद हैं।
    • फ्रंट आई सेंसर ने 'हरा रंग?' का पता लगाया।
      • 90 डिग्री दाएं मुड़ें
    • फ्रंट आई सेंसर ने 'नीला' रंग पहचाना?
      • 90 डिग्री बाईं ओर मुड़ें
    • फ्रंट आई सेंसर ने 'लाल रंग?' का पता लगाया।
      • गाड़ी चलाना बंद करो
    • फ्रंट आई सेंसर ने 'कोई नहीं?' का पता लगाया
      • आगे की तरफ गाड़ी चलाये
  • डिस्क मेज़ प्लेग्राउंड खोलें और प्रोजेक्ट चलाएं।

इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन चुनें।