जब मैं एक बच्चा था, तो मैंने इंटेलीविजन गेम एडवांस्ड डनगन्स और ड्रेगन खेला : ट्राम का खजाना । 3-डी ग्राफिक्स ने आपको चौंकाने वाले यथार्थवाद के साथ पहले व्यक्ति-परिप्रेक्ष्य में रखा:
लेकिन फिर मुझे सी -64 मिला। और मैं 40x25 वर्ण ग्रिड पर स्क्रीन के चारों ओर शाप देकर, Ctrl कुंजी और एक अंक के साथ रंग सेट करके, और कहीं भी प्रतीक रख सकता था जो मैं चाहता था ( bash
मुझे ऐसा क्यों नहीं करने देता?) । वर्ण सेट में त्रिकोणीय घटक और ठोस ब्लॉक घटक थे। इसलिए मैं इस माध्यम से यह सुनिश्चित करने में सक्षम था कि कोई उस माध्यम से ग्रिड में किसी के दृष्टिकोण का प्रतिपादन कैसे कर सकता है।
मुझे इस सप्ताह "डंगऑन कंस्ट्रक्शन सेट" के बारे में सर्पिल-बाउंड नोटबुक पेपर में लगभग तीन-दशक पुरानी कल्पना मिली:
( अद्यतन : सावधान पाठकों ने ध्यान दिया होगा कि यह slanted भागों पर एक साथ पकड़ नहीं है। सही संख्या नीचे दी गई है)
हालांकि ट्रामिन का खजाना एक ग्रिड पर खेला जाता था, लेकिन दीवारें केवल ग्रिड वर्गों के किनारों पर मौजूद थीं । यह जानने के बाद कि बाइट्स क्या हैं, मैंने महसूस किया कि अगर मैंने नक्शे को बाइट्स से बाहर कर दिया ... तो नक्शे के प्रत्येक वर्ग में इसके प्रत्येक किनारे के लिए चार संभावित अवस्थाएँ हो सकती हैं:
- अबाधित
- दीवार
- द्वार
- कुछ और?
मुझे इसे लिखने के लिए कभी नहीं मिला (कल रात तक)। मुझे लगा कि दूसरों के लिए कोशिश करना मज़ेदार हो सकता है।
तो आपका काम एक चरित्र-मोड-आधारित भूलभुलैया रेंडरर को लागू करना है जो मेरे (सही !!) युक्ति को लागू करता है ... लेकिन 2013 की तकनीकों का उपयोग करके।
इनपुट
क्योंकि कल्पना दरवाजों के लिए प्रतिपादन को परिभाषित नहीं करती है, हम सिर्फ मान लेंगे कि दीवार और दीवार नहीं हैं। सादगी के लिए, आपका इनपुट एक ऐसा तार है जो तारों की रेखाओं से बना होता है जो इस तरह दिखता है:
WN.. .N.. .N.. .N.. .N.E
W... .... .... ..S. ...E
W... .N.E W... .N.. ...E
W... .... .... .... ...E
W.S. ..S. ..S. ..S. ..SE
यह एक 5x5 नक्शा होगा। ऊपरी बाएं कोने (1,1) में इसका W
एस्ट और N
ऑर्थ वॉल सेट है। निचले दाएं कोने (5,5) में इसका S
मुंह और E
दीवार का सेट है।
यह बिना मानचित्र नेविगेशन के काफी कम मज़ेदार है। तो कम से कम, अपने खिलाड़ी को (1,1) उत्तर की ओर मुंह करके उन्हें पेश करें:
[F]orward, [B]ackward, turn [L]eft, turn [R]ight or [Q]uit?
प्रत्येक चरण में, प्रथम-व्यक्ति के परिप्रेक्ष्य में 16x15 का प्रदर्शन, जैसा कि नोटबुक पेपर कल्पना द्वारा परिभाषित किया गया है। आपको गिनने के लिए रखने के लिए, तीन दूरी पर समतल दीवारों के आकार हैं:
14x13 (directly in front of you; e.g. wall is in same cell)
8x7 (one step away)
6x5 (two steps away)
झुकी हुई दीवारों के आकार हैं:
1x15 (your direct left or right; e.g. wall is in same cell)
3x13 (one step away)
1x7 (two steps away)
स्पष्टीकरण
आसन्न कोशिकाएं साझा दीवारों के बारे में असहमत हो सकती हैं। तो एक चौराहे पर दक्षिण का किनारा एक दीवार हो सकता है, जबकि इसके दक्षिण में चौकोर पर उत्तरी छोर बिना बाधा के होगा। मूल डिजाइन में मैंने इसे एक विशेषता माना: यह एक-तरफ़ा दरवाजों जैसे दिलचस्प विचारों को अनुमति देता है ... या अदृश्य दीवारें जो केवल आपके द्वारा पारित होने के बाद दिखाई देती हैं। इस सरलीकरण के लिए, एक ही नियम का पालन करें: नेविगेशन और रेंडरिंग के लिए, केवल उस दिशा पर ध्यान दें, जिस सेल का आप सामना कर रहे हैं ।
"छायांकन" के साथ दृश्य बहुत बेहतर है। तो अपने पूर्ण ब्लॉक के लिए, या तो यूनिकोड 2593 25 और 2591, को वैकल्पिक करें, या उपयोग करें
X
और+
यदि आपका कार्यान्वयन ASCII है।यूनिकोड त्रिभुज वर्ण (25E2 ◢, 25E3 (, 25E4 triangle, 25E5 this) इसे खींचने के लिए थोड़ा सा लंगड़ा है। किसी भी छायांकित संस्करण के न होने के अलावा, वे अक्सर केवल चरित्र की चौड़ाई और पूरी ऊँचाई को नहीं खींचते ... निश्चित चौड़ाई के फोंट में भी। आप पूर्ण ब्लॉक या स्लेश वर्ण या आपके द्वारा चुने गए स्थानों में से कुछ चुन सकते हैं, जो मुझे विकर्ण चाहते थे। दिलचस्प रचनात्मक समाधान जो रंग को शामिल करते हैं और इन पात्रों का उपयोग छायांकन की बजाय करते हैं।
आप मान सकते हैं कि सबसे बाहरी दीवारें खेल के क्षेत्र को बांधने के लिए सेट हैं, इसलिए आपको भूलभुलैया के बाहर कुछ भी प्रस्तुत करने के बारे में चिंता करने की ज़रूरत नहीं है। किसी भी दीवार से दूर आप कल्पना से दूर हैं और बस खाली जगह छोड़ दें।
यदि आप उत्तर (1,1) DARK का सामना करना पड़ रहा है तो आपके सामने सीधे दिखाई देने वाली दीवार की छायांकन। नक्शे में आसन्न दीवारों पर वैकल्पिक छायांकन, जैसे कि यदि सभी दीवारें मौजूद थीं तो एक हल्की दीवार कभी भी एक अंधेरे दीवार को खत्म नहीं करेगी।
एक C-64 कार्यान्वयन जो वास्तव में वही करता है जो मैं मूल रूप से करता था ... विकर्ण पात्रों के साथ और सभी ... किसी भी अन्य प्रविष्टि मानदंड को ट्रम्प करेंगे। :-)
उदाहरण
ऊपर दिए गए नमूना मानचित्र के लिए ...
दक्षिण में सामना करना पड़ रहा (1,3):
/
/+
/X+
/XX+
/XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
\XXX+
\XX+
\X+
\+
\
दक्षिण में (३,२) सामना करना पड़ रहा है:
/* blank line */
X /
X /+
X /++
X +++
X +++
X +++
X +++
X +++
X +++
X +++
X \++
X \+
X \
/* blank line */
पूर्व में (३,२) सामना करना पड़ रहा है:
/* blank line */
/
/X
/XX
XXX
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
+++++XXXXXX+XXX+
XXX
\XX
\X
\
/* blank line */
उत्तर में (2,3) पर:
/
++++++++++++++X
++++++++++++++X
++++++++++++++X
++++++++++++++X
X++++++++++++++X
X++++++++++++++X
X++++++++++++++X
X++++++++++++++X
X++++++++++++++X
++++++++++++++X
++++++++++++++X
++++++++++++++X
++++++++++++++X
\
X
का 3, 2
सामना करने के अपने दृष्टिकोण में एस के दो स्तंभों की व्याख्या कर सकते हैं ?