रूटिंग नीति जोड़ने से पहले एक नियंत्रक निर्णय का परीक्षण करें
गेम के init और update फ़ंक्शन में JavaScript से प्रारंभ करें और सिमुलेशन देखने के लिए स्टार्ट दबाएँ। सटीक idle इवेंट और goToFloor व्यवहार के लिए इन-गेम एपीआई संदर्भ का उपयोग करें। पहला अभ्यास यह समझना है कि एक निष्क्रिय लिफ्ट को अपना अगला लिफ्ट्य कब मिलता है। कई शर्तें जोड़ने से पहले उस घटना और परिणामी गतिविधि को देखें, ताकि आप बता सकें कि नियंत्रक के किस भाग ने अनुरोध जारी किया है।
फिर यात्री गंतव्यों का निरीक्षण करें। केवल आवाजाही का मतलब यह नहीं है कि यात्रियों को सेवा दी जा रही है। संदर्भ में floor_button_pressed ईवेंट पढ़ें और आपके द्वारा देखे गए मार्ग के साथ अनुरोधों की तुलना करें। यदि कई लिफ्ट एक ही मार्ग दोहराती हैं, तो कुछ कतारें अभी भी प्रतीक्षा कर सकती हैं। एक जटिल नीति की नकल करने और यह मानने के बजाय कि यह वर्तमान चुनौती के यात्री या प्रतीक्षा-समय के उद्देश्य को पूरा करती है, एक छोटे नियंत्रक से निर्माण करें जिसे आप समझते हैं।
चुनौती के वास्तविक लक्ष्य के साथ कोड परिवर्तन की तुलना करें
सिमुलेशन शुरू करने से पहले, चुनौती को पूरा करने की शर्त पढ़ें और निरीक्षण के लिए एक व्यवहार चुनें, जैसे निष्क्रिय समय, बार-बार रुकना या किसी विशेष मंजिल पर यात्रियों का इंतजार करना। एक निर्णय बदलो और फिर से चलाओ. लिफ्ट का अधिक बार चलना यह साबित नहीं करता कि नियंत्रक चुनौती को पूरा करता है। सफलता के एकमात्र संकेत के रूप में आंदोलन का उपयोग करने के बजाय दृश्यमान कतारों और प्रदर्शित परिणाम की तुलना उद्देश्य से करें।
destinationQueue को सीधे संपादित करते समय, checkDestinationQueue को कॉल करने के लिए संदर्भ की आवश्यकता का पालन करें ताकि संशोधित कतार प्रभावी हो जाए; सामान्य goToFloor अनुरोध पहले से ही कतारबद्ध गंतव्यों को संभालते हैं। डिबगिंग के दौरान उन तरीकों को अलग रखें। यह केंद्र एक ब्राउज़र प्रोग्रामिंग सिमुलेशन का वर्णन करता है, न कि किसी वास्तविक एलिवेटर या उत्पादन सुरक्षा प्रणाली के लिए सॉफ़्टवेयर का। यह गारंटी नहीं देता कि एक नियंत्रक हर चुनौती को पार कर जाएगा। गेम के अंदर सटीक एपीआई दस्तावेज़ का उपयोग करें, फिर रिकॉर्ड करें कि किस ईवेंट और रूटिंग परिवर्तन ने आपके द्वारा अभी चलाए गए विशेष परीक्षण में सुधार किया है।
एक ठोस समीक्षा के लिए, एक मंजिल को एक कतार के साथ देखें जबकि एक लिफ्ट निष्क्रिय हो जाती है। पहचानें कि कौन सा हैंडलर अगला goToFloor अनुरोध जारी करता है और क्या वह अनुरोध प्रतीक्षा कर रहे यात्रियों को सेवा प्रदान करता है या लिफ्ट को कहीं और भेजता है। उस एक रूटिंग विकल्प को बदलें, फिर चुनौती परिणाम की तुलना करें। यदि कई हैंडलर प्रतिस्पर्धा करते हैं, तो नियंत्रक को तब तक सरल बनाएं जब तक आप अनुरोधों के अनुक्रम को समझा न सकें। सटीक समर्थित घटनाओं के लिए एपीआई संदर्भ का उपयोग करें। एक समय में एक कतार और एक निर्णय का अवलोकन आपको यह दावा किए बिना संशोधन के लिए सबूत देता है कि यह एक सार्वभौमिक इष्टतम नियंत्रक है।
Elevator Saga टिप्स और स्ट्रेटेजी
अगली बाज़ी में अभ्यास करने के लिए कोई सुझाव चुनें। यह सूची खेल में बदलाव नहीं करती और खेल की प्रगति सहेजती नहीं है।
Elevator Saga सवाल और जवाब
मैं कौन सी भाषा में लिखता हूँ?
कंट्रोलर JavaScript का इस्तेमाल करता है, और गेम के एडिटर में init और update फ़ंक्शन हैं।
क्या यह असली लिफ्ट चलाता है?
नहीं। यह पूरी तरह से ब्राउज़र गेम के अंदर एक प्रोग्रामिंग सिमुलेशन है।
क्या मैं इसका इस्तेमाल कोडिंग की प्रैक्टिस के लिए कर सकता हूँ?
हाँ, खासकर इवेंट-ड्रिवन कंट्रोल और छोटे बदलावों की टेस्टिंग। यह गेम मैगवो के MIT-लाइसेंस वाले Elevator Saga प्रोजेक्ट पर आधारित है; यह कोई सर्टिफ़िकेशन कोर्स नहीं है।
लिफ्ट चलने पर भी यात्री क्यों इंतजार करते हैं?
एक रास्ता दोहराने से हर माँगी गई मंजिल पर सेवा अपने आप नहीं मिलती। floor_button_pressed संभालें और goToFloor से यात्रियों की मंजिल दें। नए पड़ाव जोड़ने से पहले कतारों को चुनौती के लक्ष्य से मिलाएँ। destinationQueue सीधे बदलें तो checkDestinationQueue बुलाएँ; सामान्य अनुरोध goToFloor संभालता है।
नियंत्रण और पूरे खेल के निर्देश
नियंत्रण और पूरे खेल के निर्देश
Elevator Saga खेलें