Skip to main content

पाठ 2: यदि/अन्यथा सशर्त कथन

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

गतिशील कैसल क्रैशर खेल के मैदान लेआउट के उदाहरण:

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

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

  • पहचानें कि [If then else] ब्लॉक एक C ब्लॉक है जो रिपोर्ट किए गए बूलियन मान के आधार पर ब्लॉक को If या Else शाखा के अंदर चलाता है।
  • पहचानें कि एक [यदि तो अन्यथा] ब्लॉक का उपयोग सामान्यतः [दोहराएँ] या [हमेशा के लिए] ब्लॉक के साथ किया जाता है ताकि स्थिति को एक से अधिक बार जांचा जा सके।
  • पहचानें और वर्णन करें कि लूप के साथ [If then else] ब्लॉक का उपयोग क्यों किया जाता है।
  • वर्णन करें कि किसी परियोजना में [यदि तो अन्यथा] शाखा को चलाने का क्या कारण होगा।

[यदि तो अन्यथा] ब्लॉक का उपयोग कैसे करें

यह चुनौती यूनिट 2 में कैसल क्रैशर चुनौती से अलग है। यूनिट 2 चुनौती में स्थिर खेल के मैदान पर इमारतों को गिराने के लिए सरल अनुक्रम और ड्राइवट्रेन कमांड का उपयोग किया गया।

यूनिट 2 से एक नमूना VEXcode VR परियोजना। यह परियोजना When started ब्लॉक से शुरू होती है और इसमें 6 ब्लॉक जुड़े होते हैं। ब्लॉक में क्रम से लिखा है, ड्राइव वेलोसिटी को 100% पर सेट करें; टर्न वेलोसिटी को 100% पर सेट करें; 1550 मिमी तक आगे ड्राइव करें; 180 डिग्री तक दाएं मुड़ें; 700 मिमी तक आगे ड्राइव करें; फिर 90 डिग्री तक दाएं मुड़ें।

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

डायनामिक कैसल क्रैशर प्लेग्राउंड का ऊपर से नीचे का दृश्य, जिसमें केवल कुछ महल ढह गए हैं, तथा अन्य अछूते हैं, यह दर्शाता है कि जब महलों की स्थिति अनियमित रूप से बदलती है, तो अकेले ड्राइवट्रेन कमांड अपर्याप्त होते हैं।

वीआर रोबोट के लिए डायनेमिक कैसल क्रैशर प्लेग्राउंडपर इमारतों को गिराने के दो मुख्य चरण हैं।

  1. यदि वीआर रोबोट किसी महल की इमारत का पता लगाता है, तो उसे गिराने के लिए उसकी ओर आगे बढ़ें।
    1. हर दूसरे खेल के मैदान के विपरीत, डायनेमिक कैसल क्रैशर खेल के मैदान दीवारें नहीं हैं। क्योंकि इमारतें डायनेमिक कैसल क्रैशर प्लेग्राउंडपर एकमात्र वस्तु हैं, इसलिए दूरी सेंसर का उपयोग इमारतों का पता लगाने के लिए किया जा सकता है।

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

      डायनामिक कैसल क्रैशर प्लेग्राउंड का ऊपर से नीचे का दृश्य, जिसमें रोबोट प्रारंभिक स्थिति में है, तथा उसके दोनों ओर घुमावदार तीर हैं, जो महल की वस्तु का पता लगने तक मुड़ने की आवश्यकता को इंगित करते हैं।

एक बार चरण 1 और 2 पूरे हो जाने पर, VR रोबोट चरण 1 पर वापस जा सकता है और डिस्टेंस सेंसर का उपयोग करके अगली इमारत को ढूंढ सकता है जिसे गिराना है।

  • VEXcode VR में एक नया प्रोजेक्ट शुरू करें और प्रोजेक्ट का नाम Unit9Lesson2रखें।

    VEXcode VR टूलबार के केंद्र में प्रोजेक्ट नाम बॉक्स, लाल बॉक्स के साथ हाइलाइट किया गया, खेल का मैदान चुनें बटन के बाईं ओर। परियोजना का नाम है यूनिट 9 पाठ 2.
  • कार्यक्षेत्र में दो [टिप्पणी] ब्लॉक जोड़ें और ऊपर बताए गए चरणों को भरें।

    एक नया VEXcode VR प्रोजेक्ट जिसमें दो टिप्पणी ब्लॉक हैं जो "जब शुरू हुआ" ब्लॉक से जुड़े हैं। टिप्पणियाँ इस प्रकार थीं: दूरी सेंसर का उपयोग करके मिली इमारत को गिराएं; और दूरी सेंसर का उपयोग करके इमारत को खोजने के लिए मुड़ें।
  • [यदि तो अन्यथा] ब्लॉक का उपयोग ऊपर उल्लिखित प्रत्येक क्रिया को ट्रिगर करने के लिए किया जा सकता है। प्रत्येक क्रिया इस बात पर निर्भर करती है कि [यदि तो अन्यथा] ब्लॉक में बूलियन स्थिति सत्य या असत्य रिपोर्ट करती है। [टिप्पणी] ब्लॉक के नीचे [यदि तो अन्यथा] ब्लॉक जोड़ें।

    वही VEXcode VR प्रोजेक्ट, जिसमें दूसरी टिप्पणी के नीचे If then else ब्लॉक संलग्न है। यदि शाखा का पैरामीटर खुला छोड़ दिया जाता है।

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

    [यदि तो अन्यथा] ब्लॉक एक सी ब्लॉक है जो बूलियन रिपोर्टर ब्लॉक को इनपुट के रूप में स्वीकार करता है। [यदि तो अन्यथा] ब्लॉक एक सशर्त कथन है जो किसी परियोजना के प्रवाह को नियंत्रित करता है। यदि शर्त पूरी होती है तो [यदि तो अन्यथा] ब्लॉक निर्देशों के एक विशेष अनुक्रम को निष्पादित करेगा, और यदि शर्त पूरी नहीं होती है तो निर्देशों का एक अन्य सेट निष्पादित करेगा, जिससे परियोजना प्रवाह 'शाखाबद्ध' हो जाएगा। [यदि तो अन्यथा] में केवल एक शाखा निष्पादित की जाएगी।

    VEXcode VR टूलबॉक्स से एक If then else ब्लॉक.
    • यदि स्थिति सत्य बताई जाती है, तो If Then शाखा के अंदर के ब्लॉक चलाए जाते हैं।
    • यदि स्थिति को FALSE के रूप में रिपोर्ट किया जाता है, तो Else शाखा के अंदर के ब्लॉक चलाए जाते हैं।
    VEXcode VR परियोजना का उपयोग If then else ब्लॉक की प्रत्येक शाखा के कार्य को दर्शाने के लिए किया जाता है। इस परियोजना में यदि तो अन्यथा ब्लॉक को जब शुरू किया जाता है से जोड़ा जाता है और इसमें लिखा होता है यदि सामने की दूरी पर कोई वस्तु मिलती है, तो टिप्पणी - दूरी सेंसर का उपयोग करके मिली इमारत को खटखटाएं और आगे बढ़ें; अन्यथा, दूरी सेंसर का उपयोग करके एक इमारत खोजने के लिए मुड़ें, और दाईं ओर मुड़ें। यदि दूरी सेंसर किसी ऑब्जेक्ट का पता लगाता है तो 'यदि तो' शाखा को ड्राइव फॉरवर्ड लेबल किया गया है। 'अन्यथा' शाखा को इस प्रकार लेबल किया गया है कि यदि दूरी सेंसर किसी वस्तु का पता नहीं लगाता है तो दाएं मुड़ें।

    एक बार जब किसी एक शाखा के अंदर सभी ब्लॉक चला दिए जाते हैं, तो परियोजना [यदि तो अन्यथा] ब्लॉक के बाहर अगले ब्लॉक पर चली जाएगी।

  • इस परियोजना में, दूरी सेंसर का उपयोग खेल के मैदान पर इमारतों का पता लगाने के लिए किया जा सकता है। [यदि तो अन्यथा] ब्लॉक में <Distance found object> ब्लॉक जोड़ें।

    पहले वाला वही VEXcode VR प्रोजेक्ट, जिसमें Distance Found ऑब्जेक्ट ब्लॉक को If then शाखा के पैरामीटर के रूप में जोड़ा गया है। यदि तो ब्लॉक अब पढ़ता है यदि सामने की दूरी एक वस्तु मिली तो।

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

    <Distance found object> ब्लॉक एक बूलियन रिपोर्टर ब्लॉक है जो रिपोर्ट करता है कि क्या डिस्टेंस सेंसर ने वीआर रोबोट के सामने कोई वस्तु पाई है। यह ब्लॉक तब सत्य रिपोर्ट करता है जब वीआर रोबोट के 3000 मिलीमीटर (मिमी) के भीतर कोई वस्तु या सतह होती है।

    दूरी पाया वस्तु VEXcode VR ब्लॉक टूलबॉक्स से जो पढ़ता है सामने दूरी एक वस्तु मिली?
  • अब [यदि तो अन्यथा] ब्लॉक की प्रत्येक शाखा को परियोजना की शुरुआत में बनाई गई टिप्पणियों का उपयोग करके परिभाषित करने की आवश्यकता है। जब <Distance found object> ब्लॉक सत्य बताता है, तो वीआर रोबोट को उस इमारत की ओर बढ़ना चाहिए ताकि उसे गिरा दिया जा सके। उस [टिप्पणी] ब्लॉक को परियोजना की 'यदि तो' शाखा में ले जाएं।

    वही VEXcode VR परियोजना, जिसमें पहली टिप्पणी थी, If then शाखा के C के अंदर चली गई। परियोजना अब जब शुरू हुई, तो यदि सामने की दूरी पर कोई वस्तु मिली, तो दूरी सेंसर का उपयोग करके मिली इमारत पर दस्तक दें।
  • यदि VR रोबोट किसी इमारत का पता नहीं लगा पाता है तो क्या होगा, इसके लिए अन्य [टिप्पणी] ब्लॉक को प्रोजेक्ट की 'अन्यथा' शाखा में ले जाएं।

    वही VEXcode VR प्रोजेक्ट, else शाखा के C के अंदर दूसरी टिप्पणी के साथ। प्रोजेक्ट अब इस प्रकार है: जब शुरू किया गया, यदि सामने की दूरी पर कोई वस्तु मिली, तो दूरी सेंसर का उपयोग करके मिली इमारत को खटखटाएं; अन्यथा, दूरी सेंसर का उपयोग करके इमारत को खोजने के लिए मुड़ें।
  • [यदि तो अन्यथा] ब्लॉक की 'यदि तो' शाखा में [ड्राइव] ब्लॉक जोड़ें।

    वही VEXcode VR प्रोजेक्ट जिसमें ड्राइव ब्लॉक को If then शाखा में पहली टिप्पणी के नीचे अग्रेषित करने के लिए सेट किया गया है। यदि तो शाखा अब पढ़ती है, यदि सामने की दूरी पर एक वस्तु मिली, तो टिप्पणी दूरी सेंसर का उपयोग करके मिली इमारत पर दस्तक दें; आगे बढ़ें।
  • जब <Distance found object> ब्लॉक गलत रिपोर्ट करता है, तो वीआर रोबोट को पीछे मुड़कर खेल के मैदान पर एक इमारत ढूंढनी होगी। [यदि तो अन्यथा] ब्लॉक की 'अन्यथा' शाखा में [टिप्पणी] ब्लॉक के नीचे [टर्न] ब्लॉक जोड़ें।

    वही VEXcode VR प्रोजेक्ट जिसमें Else शाखा में दूसरी टिप्पणी के ठीक नीचे टर्न ब्लॉक सेट किया गया है। अब Else शाखा में लिखा है, Else, दूरी सेंसर का उपयोग करके भवन खोजने के लिए मुड़ें; फिर दाईं ओर मुड़ें।
  • परियोजना का परीक्षण करने से पहले, एक और ब्लॉक जोड़ना आवश्यक है। [यदि तो अन्यथा] ब्लॉक स्टैक में अगले ब्लॉक पर जाने से पहले केवल एक बार या स्थिति की जांच करेंगे। यूनिट 7 में, वीआर रोबोट को डाउन आई सेंसर की स्थिति की बार-बार जांच करने का निर्देश देने के लिए परियोजना में एक [फॉरएवर] ब्लॉक जोड़ा गया था। यह सुनिश्चित करने के लिए कि दूरी सेंसर स्थिति की बार-बार जांच की जा रही है , [Forever] ब्लॉक को [If then else] ब्लॉक के चारों ओर कार्यक्षेत्र में खींचें।

    परियोजना में फॉरएवर ब्लॉक को जोड़ने का अवलोकन, ताकि संपूर्ण If then else ब्लॉक फॉरएवर ब्लॉक के C के अंदर हो। परियोजना अब इस प्रकार है: जब शुरू किया गया, हमेशा के लिए, यदि सामने की दूरी पर कोई वस्तु मिली तो आगे बढ़ें; अन्यथा दाएं मुड़ें।
  • डायनेमिक कैसल क्रैशर प्लेग्राउंड खोलें और प्रोजेक्ट चलाएं।

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

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

    वी.आर. रोबोट का पार्श्व दृश्य, जो खेल के मैदान के किनारे से एक महल के टुकड़े को धकेल रहा है, लेकिन रोबोट खेल के मैदान की सीमा पर इस प्रकार से आगे बढ़ रहा है, जैसे कि वह भी किनारे से गिर जाएगा।
  • परियोजना के दौरान, वीआर रोबोट किसी इमारत के टुकड़े को किनारे तक धकेल सकता है और उसे खेल के मैदान से नीचे गिरा सकता है। ऐसा इसलिए है क्योंकि <Distance found object> ब्लॉक अभी भी रिपोर्ट कर रहा है कि VR रोबोट के सामने कोई वस्तु है। जब यह ब्लॉक सत्य रिपोर्ट करता है, तो वीआर रोबोट आगे बढ़ता है। वी.आर. रोबोट को मेज से नीचे गिराना।

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