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

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

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

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

-
forलूप के अंदर कमांड्स का चयन करें, और लूप के अंदर कमांड्स को सही ढंग से इंडेंट करने के लिए 'टैब' का उपयोग करें। सही ढंग से इंडेंट किए जाने पर, ग्रे संकेतक लाइन को forलूप को waitकमांड के साथ जोड़ना चाहिए, ताकि बाहरी लूप की सीमाएं दिखाई जा सकें। पूर्ण होने पर, आपकी परियोजना इस प्रकार दिखेगी:
def main(): for repeat_count in range(3): # 1. डाउन आई सेंसर का उपयोग करके डिस्क पर ड्राइव करें जब तक down_eye.near_object() न हो: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. डिस्क चुंबक उठाओ.एनर्जाइज़ (बूस्ट) # 3. दूरी सेंसर का उपयोग करके लक्ष्य तक ड्राइव करें drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain. स्टॉप() # 4. लक्ष्य में डिस्क ड्रॉप करें magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) # 5. मुड़ें और अगले लक्ष्य की ओर ड्राइव करें drivetrain.turn_to_heading(90, DEGREES) drivetrain.drive_for(FORWARD, 800, MM) # 6. डिस्क पर जाएँ drivetrain.turn_to_heading(0, DEGREES) wait(5, MSEC) - ऊपर बताए अनुसार कमांड्स को स्थानांतरित करने और इंडेंटेशन को समायोजित करने का तरीका जानने के लिए नीचे दिया गया वीडियो देखें। वीडियो क्लिप में, परियोजना के छह टिप्पणी अनुभागों को हाइलाइट किया गया है, और संदर्भ मेनू खोला गया है। 'कट' विकल्प का चयन किया जाता है, और फिर कर्सर को for loop कमांड के नीचे रखा जाता है। संदर्भ मेनू पुनः खोला जाता है, और 'पेस्ट' का चयन किया जाता है। तब कमांड for लूप के भीतर होते हैं, लेकिन गलत तरीके से इंडेंट किए जाते हैं। छह टिप्पणी अनुभागों को पुनः हाइलाइट किया जाता है तथा लूप के भीतर प्रोजेक्ट को सही ढंग से इंडेंट करने के लिए कीबोर्ड पर 'टैब' दबाया जाता है।
- डिस्क मूवर प्लेग्राउंडखोलें यदि यह पहले से खुला नहीं है, और प्रोजेक्ट चलाएं।
-
जब यह परियोजना चलती है, तो वीआर रोबोट प्रत्येक रंग की एक डिस्क उठाता है और उसे उसके संबंधित रंगीन लक्ष्य में छोड़ देता है।

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