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

-
एक बार जब पहली लाल डिस्क को हटा दिया जाता है, तो वीआर रोबोट को हरे लक्ष्य तक जाना होगा और नीली और लाल डिस्क को हटाने के लिए इस्तेमाल की गई क्रियाओं को दोहराकर पहली हरी डिस्क को हटाना होगा।

- व्यवहारों को कई बार दोहराने के लिए, लूप का उपयोग किया जा सकता है।

-
प्रोजेक्ट के शीर्ष पर, पहले कमेंट के ऊपर, एक 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 लूप के अंदर हैं, लेकिन गलत तरीके से इंडेंट किए गए हैं। छह कमेंट सेक्शन को फिर से हाइलाइट किया जाता है और लूप के भीतर प्रोजेक्ट को सही ढंग से इंडेंट करने के लिए कीबोर्ड पर 'टैब' दबाया जाता है।
- यदि डिस्क मूवर प्लेग्राउंड पहले से खुला नहीं है,उसे खोलें और प्रोजेक्ट चलाएं।
-
जब यह प्रोजेक्ट चलाया जाता है, तो वीआर रोबोट प्रत्येक रंग की एक डिस्क को उठाता है और उसे उसके संबंधित रंग के लक्ष्य में गिरा देता है।

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