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

सीखने के परिणाम
- यह पहचानें कि [If then else] ब्लॉक एक C ब्लॉक है जो रिपोर्ट किए गए बूलियन मान के आधार पर If या Else शाखा के अंदर के ब्लॉकों को चलाता है।
- यह पहचानें कि किसी स्थिति की एक से अधिक बार जांच करने के लिए [If then else] ब्लॉक का उपयोग सामान्यतः [Repeat] या [Forever] ब्लॉक के साथ किया जाता है।
- [If then else] ब्लॉक का उपयोग लूप के साथ क्यों किया जाता है, इसे पहचानें और समझाएं।
- बताइए कि किसी प्रोजेक्ट में [If then else] ब्रांच को चलाने का कारण क्या होगा।
[If then else] ब्लॉक का उपयोग कैसे करें
यह चुनौती यूनिट 2 में मौजूद कैसल क्रैशर चुनौती से अलग है। यूनिट 2 की चुनौती में एक स्थिर खेल के मैदान पर इमारतों को गिराने के लिए सरल अनुक्रमण और ड्राइवट्रेन कमांड का उपयोग किया गया था।

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

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

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

-
एक बार चरण 1 और 2 पूरे हो जाने के बाद, वीआर रोबोट चरण 1 पर वापस जा सकता है और दूरी सेंसर का उपयोग करके अगली इमारत को गिराने के लिए खोज सकता है।
-
VEXcode VR में एक नया प्रोजेक्ट शुरू करें और प्रोजेक्ट का नाम Unit9Lesson2 रखें।

-
वर्कस्पेस में दो [Comment] ब्लॉक जोड़ें और ऊपर बताए गए चरणों का पालन करें।

-
ऊपर वर्णित प्रत्येक क्रिया को ट्रिगर करने के लिए [If then else] ब्लॉक का उपयोग किया जा सकता है। प्रत्येक क्रिया इस बात पर निर्भर करती है कि [If then else] ब्लॉक में बूलियन स्थिति TRUE या FALSE रिपोर्ट करती है या नहीं। [Comment] ब्लॉक के नीचे एक [If then else] ब्लॉक जोड़ें।

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

- यदि शर्त TRUE बताई जाती है, तो If Then शाखा के अंदर के ब्लॉक चलाए जाते हैं।
- यदि स्थिति को FALSE के रूप में रिपोर्ट किया जाता है, तो Else शाखा के अंदर के ब्लॉक चलाए जाते हैं।

एक बार जब किसी एक शाखा के अंदर के सभी ब्लॉक चल जाते हैं, तो प्रोजेक्ट [If then else] ब्लॉक के बाहर अगले ब्लॉक पर चला जाएगा।
-
इस परियोजना में, खेल के मैदान पर इमारतों का पता लगाने के लिए डिस्टेंस सेंसर का उपयोग किया जा सकता है। [If then else] ब्लॉक में एक <Distance found object> ब्लॉक जोड़ें।

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

-
अब [If then else] ब्लॉक की प्रत्येक शाखा को प्रोजेक्ट की शुरुआत में बनाए गए कमेंट्स का उपयोग करके परिभाषित करने की आवश्यकता है। जब <Distance found object> ब्लॉक TRUE रिपोर्ट करता है, तो VR रोबोट को उस इमारत की ओर बढ़ना चाहिए ताकि उसे गिरा दिया जा सके। उस [Comment] ब्लॉक को प्रोजेक्ट की 'If Then' शाखा में ले जाएं।

-
यदि वीआर रोबोट किसी इमारत का पता नहीं लगाता है तो क्या होना चाहिए, इसके लिए दूसरे [टिप्पणी] ब्लॉक को प्रोजेक्ट की 'एल्स' शाखा में ले जाएं।

-
[If then else] ब्लॉक की 'If Then' शाखा में एक [Drive] ब्लॉक जोड़ें।

-
जब <Distance found object> ब्लॉक FALSE रिपोर्ट करता है, तो VR रोबोट को मुड़कर खेल के मैदान पर एक इमारत ढूंढनी होगी। [If then else] ब्लॉक की 'Else' शाखा में [Comment] ब्लॉक के नीचे एक [Turn] ब्लॉक जोड़ें।

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

-
डायनामिक कैसल क्रैशर प्लेग्राउंड खोलें और प्रोजेक्ट चलाएं।

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

-
प्रोजेक्ट के प्रत्येक चरण में, वीआर रोबोट तब तक घूमेगा जब तक कि डिस्टेंस सेंसर द्वारा किसी इमारत का पता नहीं चल जाता, फिर वह उस इमारत की ओर बढ़ेगा और उसे गिरा देगा।

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