विषयसूची:

शुगरक्यूब के साथ सुतली में चर से लिंक: १० कदम
शुगरक्यूब के साथ सुतली में चर से लिंक: १० कदम

वीडियो: शुगरक्यूब के साथ सुतली में चर से लिंक: १० कदम

वीडियो: शुगरक्यूब के साथ सुतली में चर से लिंक: १० कदम
वीडियो: Basic 3 step/क़िसी भी गाने पर डाँस कर सकते हो अब/tutorial/step to step/ Part 1/Manish Indoriya 2024, जुलाई
Anonim
शुगरक्यूब के साथ सुतली में चर से लिंक
शुगरक्यूब के साथ सुतली में चर से लिंक

मुझे बहुत खुशी है कि आप मेरे साथ फिर से जुड़ गए हैं! इसका मतलब है कि Wumpus ने अभी तक आपको नहीं खाया है। अच्छा!

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

पिछले ट्यूटोरियल में, मैंने कमरों का एक छोटा सा सेट बनाया था जिसे खिलाड़ी एक्सप्लोर कर सकता है। मैंने एक Wumpus ऑब्जेक्ट जोड़ा, और Wumpus कहाँ है, इसके आधार पर प्रत्येक कमरे में प्रदर्शित होने वाली चीज़ों को बदलने के लिए कुछ सामान्य कक्ष कोड बनाए।

चरण 1: अपना खिलाड़ी बनाएं

अपना खिलाड़ी बनाएं
अपना खिलाड़ी बनाएं

यह कदम बहुत आसान है। अनिवार्य रूप से मैं अपने $wumpus के समान कोड का उपयोग कर रहा हूं, लेकिन इसके बजाय $player चर के साथ।

चरण 2: नया कमरा कोड

न्यू रूम कोड
न्यू रूम कोड

अपने सामान्य कक्ष कोड को बदल दिया ताकि $player का मान वर्तमान कक्ष हो। फिर मौजूदा कमरे के बजाय $wumpus से $player की तुलना करें।

यह एक मामूली बदलाव है, और पूरी तरह से जरूरी नहीं है, लेकिन मुझे अपना कोड व्यवस्थित रखना पसंद है।

चरण 3: एक चर से एक लिंक बनाना

एक चर से एक लिंक बनाना
एक चर से एक लिंक बनाना

अंत में, मेरे शुरुआती कमरे में लिंक को उस लिंक से बदलना चाहते हैं जो $player के मूल्य के आधार पर बदलता है। यह शुगरक्यूब में "" फ़ंक्शन के साथ किया जा सकता है। आप इसके बारे में सुगरक्यूब के प्रलेखन पृष्ठ में अधिक पढ़ सकते हैं।

हमारे आदेश के बाद पहली स्ट्रिंग वह वाक्यांश है जो हमारे मार्ग में दिखाई देगी। दूसरा उस पैसेज का नाम है जिससे हम लिंक करना चाहते हैं। मैं "हंट द वम्पस!" का उपयोग कर रहा हूँ। मेरे वाक्यांश के रूप में, लेकिन हम इसके बजाय हमारे चर का उपयोग कर सकते हैं यदि हम चाहते हैं कि खिलाड़ी यह जान सके कि वे पहले से कहां जा रहे हैं, जैसे:

चरण 4: परीक्षण

परीक्षण
परीक्षण
परीक्षण
परीक्षण

जब आप अपने कोड का परीक्षण करते हैं, तो आप पाएंगे कि आपके लिंक को आपके द्वारा पहले लिखे गए किसी भी वाक्यांश से बदल दिया गया है। इसे क्लिक करने से आप अपने गेम के एक यादृच्छिक कमरे में पहुंच जाते हैं।

दुर्भाग्य से, यह आपको सीधे Wumpus कक्ष में भी ले जा सकता है! यह अभी बहुत मायने नहीं रखता है, लेकिन एक वास्तविक खेल में जो एक त्वरित खेल खत्म हो जाएगा। हमें इसे ठीक करने की जरूरत है।

चरण 5: एक कमरे की सूची जोड़ें

एक कमरे की सूची जोड़ें
एक कमरे की सूची जोड़ें

सबसे पहले, हम कमरों की सूची बनाने जा रहे हैं, ताकि कमरों का प्रबंधन आसान हो सके। इस सरणी को घोषित करके, हम कोड को दोहराए बिना अपने $player और $wumpus मान सेट करने के लिए इसका उपयोग कर सकते हैं। इसका एक अन्य लाभ भी है जिसकी खोज हम आगे करेंगे।

इस कोड के साथ परीक्षण को पहले की तरह ही व्यवहार करना चाहिए।

चरण 6: कमरों को हटाना

कमरों को हटाना
कमरों को हटाना

मैंने पहले (हाइलाइट) से कोड की एक पंक्ति को कोड में जोड़ा है।

Sugarcube में Arrays में एक अंतर्निहित फ़ंक्शन होता है जो आपको नाम से तत्वों को हटाने देता है। इस मामले में, एक बार जब हम $wumpus को एक कमरा आवंटित कर देते हैं, तो हम उस कमरे को अपनी $roomlist से हटा सकते हैं। हालाँकि, यह फ़ंक्शन बारीक है। यह तब तक काम नहीं करेगा जब तक कि फ़ंक्शन का आउटपुट किसी तरह से असाइन या उपयोग नहीं किया जाता है। इसका ख्याल रखने के लिए, मैंने अस्थायी चर _temp बनाया है।

शुगरक्यूब में, अस्थायी चर एक डॉलर ($) के बजाय अंडरस्कोर (_) से शुरू होते हैं। वे उपयोगी हैं क्योंकि पैसेज चलने के बाद वे हटा दिए जाते हैं, इसलिए आपको अतिव्यापी चर नामों के बारे में चिंता करने की आवश्यकता नहीं है।

मैं $player रूम को $roomlist से भी हटा रहा हूँ, बिल्कुल निश्चित रूप से।

चरण 7: परीक्षण

परिक्षण
परिक्षण
परिक्षण
परिक्षण

जबकि हम कोड को अभी चला सकते हैं, यह बहुत गहन परीक्षण नहीं होगा। अगर हम कोड चलाते हैं और पाते हैं कि $player और $wumpus अलग-अलग कमरों में असाइन किए गए हैं, तो हम नहीं जानते कि ऐसा इसलिए है क्योंकि कोड काम करता है, या अगर यह सिर्फ मौका है। निश्चित रूप से, हम कोड को कई बार चला सकते हैं, और यह मान सकते हैं कि यदि यह उन दोनों को एक ही कमरा कभी नहीं देता है जो वह कभी नहीं देगा, लेकिन यह हमेशा के लिए ले जाएगा और यह अभी भी 100% आश्वासन नहीं है कि यह कभी नहीं हो सकता है।

इसके बजाय, हमें जाँच करने का एक तरीका चाहिए।

मैंने अपने परिचय मार्ग के शीर्ष पर तीन पंक्तियाँ जोड़ी हैं जो हमें हमारे $wumpus, $player, और $roomlist चर के मूल्यों को देखने देगी। जिस तरह से हम अपना कोड सेट करते हैं, उसके कारण हम जानते हैं कि $wumpus रूम और $player रूम को $roomlist से हटा दिया जाना चाहिए।

जब हम इस कोड को चलाते हैं, तो हम यह सुनिश्चित करने के लिए जांच कर सकते हैं कि यह मामला है।

चरण 8: चीनी के क्यूब और वस्तुओं के साथ विषमताएं

शुगरक्यूब और वस्तुओं के साथ विषमताएं
शुगरक्यूब और वस्तुओं के साथ विषमताएं
शुगरक्यूब और वस्तुओं के साथ विषमताएं
शुगरक्यूब और वस्तुओं के साथ विषमताएं
शुगरक्यूब और वस्तुओं के साथ विषमताएं
शुगरक्यूब और वस्तुओं के साथ विषमताएं

शुगरक्यूब की वस्तुएं थोड़ी अजीब होती हैं। मुझे इसका प्रदर्शन करने दो।

जब मैं मूल रूप से इस परियोजना का निर्माण कर रहा था, इससे पहले कि मैं इससे कमरे हटाना शुरू कर दूं, मैं अपनी $roomlist को $saveroom चर में सहेजना चाहता था। मुझे लगा कि यह बाद में काम आएगा।

जब मुझे इस कोड से कुछ अजीब व्यवहार मिला, तो मैंने अपने परिचय पृष्ठ पर एक और पंक्ति जोड़ दी ताकि मैं अपने $saveroom चर (दूसरी तस्वीर) को देख सकूं।

मैं यह जानकर चौंक गया कि मैंने जो तत्व $roomlist से हटा दिए थे, वे भी मेरी सहेजी गई सूची से हटा दिए गए थे! आप इसे तीसरी तस्वीर में कार्रवाई में देख सकते हैं।

ऐसा इसलिए है क्योंकि जब आप इस तरह एक सरणी की प्रतिलिपि बनाते हैं, तो आप वास्तव में सुतली को सरणी की प्रतिलिपि बनाने के लिए नहीं कह रहे हैं, आप सुतली को बता रहे हैं कि ये दो चर एक ही सरणी हैं। जब आप एक चर का उपयोग करके सरणी में कुछ करते हैं, तो यह उसी सरणी को बदल देता है जिसे दूसरा चर देख रहा है!

हम इसे क्लोन () फ़ंक्शन के साथ ठीक कर सकते हैं।

चरण 9: क्लोन () फ़ंक्शन

क्लोन () फ़ंक्शन
क्लोन () फ़ंक्शन
क्लोन () फ़ंक्शन
क्लोन () फ़ंक्शन

आप शुगरक्यूब प्रलेखन पृष्ठ पर क्लोन () फ़ंक्शन के बारे में पढ़ सकते हैं।

एक "उथली" प्रति वह है जो हम पहले कर रहे थे। संपूर्ण सरणी की पूरी प्रतिलिपि बनाने के बजाय, यह मान लेता है कि आपका चर उसी सरणी के साथ काम कर रहा है। एक उथली प्रतिलिपि के बजाय, क्लोन() एक "गहरी" प्रतिलिपि करता है, जो आपके जैसा व्यवहार करता है अपेक्षा करता है। सरणी के प्रत्येक तत्व को एक नए सरणी में कॉपी किया गया है, और मूल से पूरी तरह से अलग है।

यदि हम इस नए कोड का परीक्षण करते हैं, तो हम पाते हैं कि यह अपेक्षा के अनुरूप काम करता है।

बेशक, इससे कोई फर्क नहीं पड़ता कि आप $roomlist रखते हैं या नहीं। मेरी परियोजना के प्रयोजनों के लिए, मैं नहीं जा रहा हूँ। यह सब सिर्फ गहरी बनाम उथली प्रतियों को प्रदर्शित करने के लिए था।

चरण 10: अभी के लिए बस इतना ही

अभी के लिए बस इतना ही!
अभी के लिए बस इतना ही!

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

हमने सीखा कि वेरिएबल से लिंक कैसे बनाया जाता है, और शुगरक्यूब द्वारा एरे कॉपीिंग का इलाज कैसे किया जाता है।

चीजें बढ़ रही हैं, लेकिन हम अभी शुरुआत कर रहे हैं!

हैप्पी हंटिंग!

सिफारिश की: