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

पाठ 3: एकाधिक व्हाइल लूप के साथ प्रोजेक्ट प्रवाह

अब जबकि आपने वीआर रोबोट को वॉल मेज़ प्लेग्राउंडपर अक्षर 'ए' तक ले जाने के लिए एक टेक्स्ट प्रोजेक्ट बना लिया है, तो आप कंडीशनल और सेंसर वैल्यू का उपयोग करके अपने कौशल का विस्तार करेंगे। इस पाठ में, आप वीआर रोबोट को वॉल मेज़ प्लेग्राउंडमें संख्या '2' तक ले जाएंगे, फिर यह जानेंगे कि अक्षर 'बी' तक जाने के लिए अतिरिक्त कमांड की आवश्यकता क्यों होती है। इस मिनी-चैलेंज में, आपको इन कौशलों का उपयोग करके वॉल मेज़ के आरंभ से संख्या '3' तक पहुंचना होगा।

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

सीखने के परिणाम

  • एक ऐसे प्रोजेक्ट में प्रोग्राम फ्लो का वर्णन करें जिसमें एक वीआर रोबोट तब तक आगे बढ़ता है जब तक कि बम्पर सेंसर को दबाया नहीं जाता।

प्रोजेक्ट का नाम बदलें

  • यदि पिछले पाठ का प्रोजेक्ट पहले से लोड नहीं है, तो Unit4Lesson2 प्रोजेक्ट लोड करें।
  • प्रोजेक्ट का नाम बदलें Unit4Lesson3.VEXcode VR टूलबार में यूनिट 4 लेसन 3 को प्रोजेक्ट नाम के रूप में दिखाया गया है। प्रोजेक्ट का नाम लाल बॉक्स में हाइलाइट किया गया है।

     

 

'A' अक्षर तक पहुंचने के लिए परियोजना का प्रवाह

पिछले पाठ में, वीआर रोबोट ने वॉल मेज़ प्लेग्राउंड पर अक्षर 'ए' तक ड्राइव किया। आइए, वॉल मेज़ में एक नए स्थान पर जाने की तैयारी करते हुए, प्रोजेक्ट के प्रवाह को विस्तार से समझते हैं।

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

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • जब कोई प्रोजेक्ट whileलूप का उपयोग not शर्त के साथ करता है, तो प्रोजेक्ट का प्रोग्राम प्रवाह अभी भी ऊपर से नीचे तक उसी क्रम का पालन करता है। whileलूप किसी शर्त के पूरा होने पर प्रोग्राम के प्रवाह को एक निश्चित बिंदु पर "रोकने" की अनुमति देता है। ऑपरेटरनॉटप्रोजेक्ट को लूप में तब तक रहने की अनुमति देता है जब तक कि स्थिति को गलत रिपोर्ट नहीं किया जाता है। फिर प्रोजेक्ट लूप के बाहर अगले कमांड पर चला जाएगा। एक बूलियन स्थिति, जैसे कि लेफ्ट बम्पर का दबा होना, ट्रू या फॉल्स मान रिपोर्ट करेगी। वीआर रोबोट को अक्षर 'ए' तक ले जाने वाले इस कोड में, वीआर रोबोट तब तक आगे बढ़ेगा जब तक
    बाएँ बम्पर के दबे होने की बूलियन स्थिति सत्य न हो जाए। अक्षर 'ए' तक ले जाने वाले प्रोजेक्ट का प्रवाह इस प्रकार होगा:ऊपर दिए गए प्रोजेक्ट के प्रवाह को दर्शाने वाला एक प्रोजेक्ट फ्लो डायग्राम बाईं ओर दिखाए गए अक्षर A तक पहुंचने का मार्ग बताता है। दाईं ओर, तीर यह दर्शाते हैं कि परियोजना किस दिशा में आगे बढ़ती है। सबसे पहले, एक लाल चक्रीय तीर यह दर्शाता है कि जब तक बम्पर को दबाया नहीं जाता है, तब तक while लूप की स्थिति false लौटाती है, इसलिए रोबोट आगे बढ़ता है। इसके बाद एक हरा नीचे की ओर तीर यह दर्शाता है कि जब बम्पर को दबाया जाता है, तो स्थिति सही बताई जाती है, इसलिए प्रोजेक्ट उस लूप से बाहर निकल जाता है और रोबोट 90 डिग्री बाईं ओर मुड़ जाता है। यह क्रम प्रोजेक्ट के प्रत्येक लूप में दोहराया जाता है।

वीआर रोबोट का व्यवहार दर्शाता है कि प्रत्येकजबकिलूप कैसे निष्पादित हो रहा है। वीआर रोबोट की गति के साथ-साथ, हम स्पष्ट रूप से देख सकते हैं कि परियोजना में प्रत्येकजबकिलूप निष्पादित होने के बाद वीआर रोबोट कहाँ चला गया है।बाईं ओर पाइथन कोड दिखाया गया है जिसमें तीन अनुक्रमिक while लूप हैं, जिनमें से प्रत्येक रोबोट को तब तक आगे बढ़ने का निर्देश देता है जब तक कि बायां बम्पर दबाया न जाए। प्रत्येक लूप में बम्पर को दबाने के बाद, रोबोट एक विशिष्ट क्रिया करता है।  पहले चरण में, रोबोट तब तक आगे बढ़ता है जब तक बम्पर को दबाया नहीं जाता, फिर वह 90 डिग्री बाईं ओर मुड़ जाता है। दाईं ओर की छवि में इस क्रिया के बाद भूलभुलैया में रोबोट की स्थिति दिखाई गई है, जिसे एक पीले वृत्त द्वारा चिह्नित किया गया है।  दूसरे चरण में, रोबोट फिर से आगे बढ़ता है जब तक कि बम्पर को दबाया नहीं जाता और फिर 90 डिग्री बाईं ओर मुड़ जाता है। दूसरी तस्वीर इस मोड़ के बाद भूलभुलैया में रोबोट की अद्यतन स्थिति को दर्शाती है।  तीसरे और अंतिम चरण में, रोबोट तब तक आगे बढ़ता है जब तक कि बम्पर को दबाया नहीं जाता। बम्पर को दबाने पर रोबोट चलना बंद कर देता है। अंतिम छवि में रोबोट की भूलभुलैया के भीतर रुकने की स्थिति दिखाई गई है, जिसे फिर से एक पीले घेरे द्वारा हाइलाइट किया गया है।

 

नंबर '2' की ओर ड्राइव करें

इस पाठ में, प्रोजेक्ट को इस प्रकार संपादित किया जाएगा कि वीआर रोबोट वॉल मेज़ प्लेग्राउंड पर संख्या '2' तक ड्राइव करे!

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

    वॉल मेज़ प्लेग्राउंड का ऊपर से लिया गया दृश्य, जहाँ वीआर रोबोट A मार्कर के ऊपर स्थित है और बाईं दीवार की ओर मुख किए हुए है। एक लाल तीर A की ओर इशारा करता है, और तीन हरे तीर नंबर 2 तक जाने वाले इच्छित मार्ग को दर्शाते हैं। हरे तीर ऊपर की ओर A के सामने वाली दीवार की ओर, फिर बाईं ओर नंबर 2 के बाईं ओर अगली दीवार की ओर, और फिर नीचे की ओर उस कोने की ओर इशारा करते हैं जिसमें नंबर 2 स्थित है।
  • दूसरे turn_forकमांड की दिशा को बाएं के बजाय दाएं में बदलें। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • यदि वॉल मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे लॉन्च करें और प्रोजेक्ट चलाएं।
  • वीआर रोबोट को '2' नंबर की ओर बढ़ते हुए देखें, लेकिन वह एक दीवार के सामने रुक जाता है। इसलिए, वीआर रोबोट को दीवार से टकराने पर रुकने के बजाय बाईं ओर मुड़ना होगा।

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

     

  • कोड को संपादित करें और उसमें से स्टॉप कमांड को हटाकर उसकी जगह निम्नलिखित कमांड डालें ताकि वीआर रोबोट को संख्या '2' तक ले जाया जा सके।

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, डिग्री)
    
    	जबकि left_bumper.pressed() नहीं है:
    		ड्राइवट्रेन.ड्राइव(फॉरवर्ड)
    		प्रतीक्षा करें(5, मिलीसेकंड)
    	
    	ड्राइवट्रेन.स्टॉप()
  • यदि वॉल मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे लॉन्च करें और प्रोजेक्ट चलाएं।
  • वीआर रोबोट को वॉल मेज़ प्लेग्राउंड पर नंबर '2' तक ड्राइव करते हुए देखें!

    वॉल मेज़ खेल के मैदान का ऊपर से लिया गया दृश्य। वीआर रोबोट अब 2 मार्कर के ऊपर स्थित है, जिसका मुख नीचे की दीवार की ओर है और उसका अगला हिस्सा दीवार से सटा हुआ है।
  • प्लेग्राउंड को रीसेट करने और वीआर रोबोट को शुरुआती स्थिति में वापस ले जाने के लिए "रीसेट" बटन चुनें।

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