सबसे पहले, प्रक्रियात्मक पीढ़ी को करने के तरीकों के बारे में पता चलता है और उनमें से कोई भी आसान नहीं है, मैं इस तरह का दृष्टिकोण बनाऊंगा कि आप इसे कैसे काम कर सकते हैं, यह आपके ऊपर है कि आप इसे ले जाएं, इसे संशोधित करें या इसे छोड़ दें।
जेएस में छद्म कोड होगा क्योंकि इसे समझना आसान है।
1, एक प्रवेश बिंदु को परिभाषित करें, जैसा कि आप एक मध्ययुगीन शहर का निर्माण करना चाहते हैं, जिसे हम एक वर्ग के साथ शुरू करने वाले हैं, जिससे आप कह सकते हैं कि आपके शहर में 300 वर्ग इकाइयां होंगी और वर्ग इसके बीच में होगा (एक्स के साथ प्रतिनिधित्व)।
300
________________
| |
| |
| | 300
| X |
| |
| |
|_______________|
const square = [ 150, 150 ];
2 अब हम रास्ते बदलेंगे, उनमें से एक यादृच्छिक संख्या होगी, वे सीधे होंगे और मध्य वर्ग से या अन्य रास्ते से शुरू होंगे
let avenues = [] // will contain start and end [[sx,sy],[ex,ey]]
const n_avenues = RANDOM(4, 8); // number of avenues
const n_av_from_square = RANDOM(0, avenues); // starting in the square
for av in av_from_square
avenues.push(square, [RANDOM(0, 200) + 100, RANDOM(0, 200) + 100])
// we want avenues to have, at least 100 units length, thats why we randomize just te last 200 units of the whole town size
यह आपको एक वर्ग और युगल मुख्य सड़कों देना चाहिए
300
________________
| \\ |
| \\ |
| \\ | 300
| X===== |
| |
| |
|_______________|
अब हमें उन रास्तों को निर्धारित करना होगा जो मुख्य वर्ग में शुरू नहीं होते हैं, वे अन्य राशियों को पार करेंगे
for av in (n_avenues - av_from_square){
const av_to_intersect = avenues[RANDOM(0,avenues.length)];
//check av_to... and get a perpendicular vector (explained bellow)
av[0] = [ av_to_intersect[0][1], - av_to_intersect[0][0] ];
av[1] = [ av_to_intersect[1][1], - av_to_intersect[1][0] ];
}
लंबवत वैक्टर पाने के लिए आपको x, y डोरियों को स्वैप करना होगा और नए y को नकारना होगा:
swiped == x: noswiped.y, y: -1 * (noswiped.x)
अभी आपके पास ऐसा ही कुछ होना चाहिए, यह शहर जैसा नहीं दिखता? : पी
300
________________
| \\ // |
| \\// || |
| \\ || | 300
| //\X===== |
| // || |
| || |
|_______________|
3 अब आपको केवल छोटी गलियों वाले रास्ते को आपस में जोड़ना है, साथ ही, आप पूरे शहर में बेतरतीब चौराहों पर जा सकते हैं और उन सभी के लिए ऊपर के समान बना सकते हैं, या बस कुछ सेकेंडरी चौकों से छोटी सड़कों को खोल सकते हैं, यह आपके ऊपर है।
याद रखें, आपकी सड़कें सबसे छोटी हैं, शहर जितना अराजक दिखता है।