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

पाठ 4: नेस्टेड लूप के साथ प्रोजेक्ट फ्लो

अगले दो डिस्क एकत्र करें

  • अब जबकि वीआर रोबोट लाल डिस्क की ओर मुंह किए हुए है, तो लाल डिस्क को उठाने और स्थानांतरित करने के लिए वीआर रोबोट को वही व्यवहार दोहराने की आवश्यकता होगी जो नीली डिस्क को इकट्ठा करने के लिए उपयोग किए गए थे। डिस्क को उठाने के लिए आगे बढ़ना, फिर मुड़कर उसी रंग के लक्ष्य तक वापस आकर डिस्क को वहीं छोड़ देना।

    डिस्क मूवर प्लेग्राउंड का ऊपर से नीचे का दृश्य, जिसमें बिंदीदार तीर वीआर रोबोट के मार्ग को दर्शाते हैं। रोबोट लाल लक्ष्य से शुरू होकर लाल डिस्क को इकट्ठा करके लक्ष्य में डालता है, फिर दाईं ओर मुड़कर हरे लक्ष्य की ओर बढ़ता है।
  • एक बार जब पहली लाल डिस्क को हटा दिया जाता है, तो वीआर रोबोट को हरे लक्ष्य तक जाना होगा और नीली और लाल डिस्क को हटाने के लिए इस्तेमाल की गई क्रियाओं को दोहराकर पहली हरी डिस्क को हटाना होगा।

    डिस्क मूवर प्लेग्राउंड का ऊपर से नीचे का दृश्य, जिसमें बिंदीदार तीर उस पथ को दर्शाते हैं जिस पर रोबोट को प्रत्येक डिस्क को इकट्ठा करने के लिए चलना होगा। तीर प्रत्येक गोल से पहले डिस्क की ओर और उससे वापस इंगित करते हैं, और अतिरिक्त दाहिने तीर प्रत्येक गोल क्षेत्र के बीच इंगित करते हैं।
  • व्यवहारों को कई बार दोहराने के लिए, लूप का उपयोग किया जा सकता है।
    मुख्य परिभाषा के भीतर VEXcode VR Python for लूप कमांड। कमांड पहली पंक्ति में कोष्ठक में 10 के साथ रेंज में मान पढ़ता है, फिर उसके ठीक नीचे प्रतीक्षा कमांड कोष्ठक में 5, MSEC के साथ प्रतीक्षा पढ़ता है।
  • प्रोजेक्ट के शीर्ष पर, पहले कमेंट के ऊपर, एक for लूप जोड़ें, और रेंज फ़ंक्शन पैरामीटर को '3' पर सेट करें। सुनिश्चित करें कि for लूप मुख्य परिभाषा के भीतर इंडेंटेड हो।

    def main():
        for repeat_count in range(3):
            wait(5, MSEC)
  • कोड कोforलूप में कॉपी करने के लिए, इंडेंटेशन पर विशेष ध्यान देने की आवश्यकता होगी। सबसे पहले,waitकमांड से पहले एक स्पेस जोड़ें, ताकि लूप इस तरह दिखे:

    def main():
        for repeat_count in range(3):
    
    
            
            wait(5, MSEC)
  • इसके बाद,forलूप में डालने के लिए कमांड चुनें, और उन्हेंwaitकमांड के ऊपर कॉपी और पेस्ट करें। ध्यान दें कि कॉपी और पेस्ट करने के बाद इंडेंटेशन गलत हो जाएगा। लूप की धूसर संकेतक रेखा टूट गई है, औरप्रतीक्षाकमांड से डिस्कनेक्ट हो गई है। यह एक दृश्य संकेत है कि आपका प्रोजेक्ट इच्छानुसार निष्पादित नहीं होगा।ऊपर दिए गए प्रोजेक्ट को गलत इंडेंटेशन के साथ फॉर लूप में कॉपी पेस्ट कर दिया गया है। अगले कोड ब्लॉक में सही इंडेंटेशन दिखाया गया है।
  • forलूप के अंदर कमांड का चयन करें, और लूप के भीतर कमांड को सही ढंग से इंडेंट करने के लिए 'टैब' का उपयोग करें। जब सही ढंग से इंडेंट किया जाता है, तो ग्रे संकेतक रेखा को फॉरलूप को वेटकमांड से जोड़ना चाहिए ताकि बाहरी लूप की सीमाएं दिखाई जा सकें। पूरा होने पर, आपका प्रोजेक्ट कुछ इस तरह दिखेगा: 

    def main():
        for repeat_count in range(3):
            # 1. डाउन आई सेंसर
            का उपयोग करके डिस्क पर ड्राइव करें जबकि डाउन_आई.नियर_ऑब्जेक्ट() नहीं है:
                ड्राइवट्रेन.ड्राइव (फॉरवर्ड)
                प्रतीक्षा करें (5, एमएसईसी)
            ड्राइवट्रेन.स्टॉप()
    
            # 2. डिस्क
            मैग्नेट उठाएँ.एनर्जाइज़ (बूस्ट)
    
            # 3. डिस्टेंस सेंसर
            ड्राइवट्रेन का उपयोग करके लक्ष्य तक ड्राइव करें। टर्न टू हेडिंग (180, डिग्री)
            जबकि फ्रंट डिस्टेंस गेट डिस्टेंस (एमएम) > 200:
                ड्राइवट्रेन ड्राइव (फॉरवर्ड)
                प्रतीक्षा करें (5, एमएसईसी)
            ड्राइवट्रेन। स्टॉप()
    
            # 4. लक्ष्य में डिस्क गिराएँ
            चुंबक.ऊर्जा (ड्रॉप)
            ड्राइवट्रेन.ड्राइव_फॉर (रिवर्स, 100, एमएम)
    
            # 5. अगले लक्ष्य की ओर मुड़ें और ड्राइव करें
            ड्राइवट्रेन.टर्न_टू_हेडिंग(90, डिग्री)
            ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 800, एमएम)
    
            # 6. डिस्क की ओर मुड़ें
            ड्राइवट्रेन.टर्न_टू_हेडिंग(0, डिग्री)  
    
        प्रतीक्षा करें(5, मिलीसेकंड)
  • ऊपर बताए गए तरीके से कमांड को स्थानांतरित करने और इंडेंटेशन को समायोजित करने का तरीका देखने के लिए नीचे दिया गया वीडियो देखें। वीडियो क्लिप में, प्रोजेक्ट के छह कमेंट सेक्शन को हाइलाइट किया गया है, और कॉन्टेक्स्ट मेनू खोला गया है। 'कट' विकल्प का चयन किया जाता है, और फिर कर्सर को for लूप कमांड के नीचे रखा जाता है। कॉन्टेक्स्ट मेनू फिर से खुलता है, और 'पेस्ट' का चयन किया जाता है। फिर कमांड for लूप के अंदर हैं, लेकिन गलत तरीके से इंडेंट किए गए हैं। छह कमेंट सेक्शन को फिर से हाइलाइट किया जाता है और लूप के भीतर प्रोजेक्ट को सही ढंग से इंडेंट करने के लिए कीबोर्ड पर 'टैब' दबाया जाता है।
वीडियो फाइल
  • यदि डिस्क मूवर प्लेग्राउंड पहले से खुला नहीं है,उसे खोलें और प्रोजेक्ट चलाएं।
  • जब यह प्रोजेक्ट चलाया जाता है, तो वीआर रोबोट प्रत्येक रंग की एक डिस्क को उठाता है और उसे उसके संबंधित रंग के लक्ष्य में गिरा देता है।

    प्रोजेक्ट के अंत में वीआर रोबोट का ऊपर से लिया गया दृश्य, जिसमें प्रत्येक रंग की एक डिस्क संबंधित लक्ष्य में रखी गई है, और वीआर रोबोट निचले दाहिने कोने में हरे लक्ष्य के किनारे पर दाहिनी ओर की दीवार की ओर मुंह किए हुए है।

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

ध्यान दें कि वीआर रोबोट दीवार की ओर बढ़ता रहा। यह व्यवहार अपेक्षित है क्योंकि परियोजना ने वीआर रोबोट को तीन बार दाएं मुड़ने और अगले लक्ष्य की ओर बढ़ने का निर्देश दिया था। पहली बार गाड़ी चलाते समय नीली बत्ती से लाल बत्ती जल रही होती है। दूसरा गोल लाल से हरे रंग की ओर है, और तीसरा गोल हरे रंग से दीवार की ओर है, क्योंकि वहां किसी अन्य रंग का गोल नहीं है। वीआर रोबोट के दीवार से टकराते ही प्रोजेक्ट को रोक दें। इस प्रोजेक्ट को इस तरह बेहतर बनाया जा सकता है कि वीआर रोबोट हरे रंग की डिस्क को उठाने और स्थानांतरित करने के बाद रुक जाए, लेकिन इससे प्रोजेक्ट की समग्र जटिलता बढ़ जाएगी।

प्रोजेक्ट के अंत में वीआर रोबोट का ऊपर से लिया गया दृश्य, जिसमें प्लेग्राउंड विंडो के बाएं कोने में स्टॉप बटन को हाइलाइट किया गया है। प्लेग्राउंड पर, मिलान वाले गोल में प्रत्येक रंग की एक-एक डिस्क मौजूद थी, और स्टॉप बटन दबाए जाने पर वीआर रोबोट हरे गोल के केंद्र में दाईं ओर की दीवार की ओर मुंह किए हुए था।

 

 

प्रश्न

पाठ की प्रश्नोत्तरी तक पहुँचने के लिए कृपया नीचे दिए गए लिंक का चयन करें।

गूगल डॉक / .docx / .pdf