সমাধান করতে সমস্যা: একটি টাইল ভিত্তিক গেমের জন্য যেখানে সমস্ত কক্ষগুলি সংযুক্ত রয়েছে তার জন্য এলোমেলো 2D অন্ধকারের মানচিত্র তৈরি করুন।
আমার বর্তমানে যা আছে তার থেকে আমি আরও ভাল সমাধানের সন্ধান করছি।
আমার বর্তমান সমাধানটি হ'ল আমি দুটি অ্যালগরিদম চালাই। প্রথমটি তার কক্ষগুলি সহ অন্ধকার জেনারেট করে। দ্বিতীয়টি নিশ্চিত করুন যে সমস্ত কক্ষ সংযুক্ত রয়েছে। অন্যান্য উত্সাহগুলি কী থাকতে পারে তা আমি আগ্রহী। দ্রুত এবং / বা সহজ ইত্যাদি। গতিটি আসলেই উদ্বেগের বিষয় নয়, তবে যদি গতি বিনা মূল্যে ব্যয় করা যায় তবে ভাল, এটি একটি ভাল জিনিস। আরও গুরুত্বপূর্ণটি হ'ল আমি এবং অন্যান্য যারা পড়েন তারা সমস্যাটি সমাধান করার এবং সমাধান করার বিভিন্ন উপায় শিখতে পারেন।
নীচে আমার বর্তমান বাস্তবায়ন রয়েছে। রুমগুলিতে বর্তমানে কোনও 2, 3 বা 4 দিকের কোনও প্রস্থান বা প্রস্থান নেই।
অন্ধকূপ ঘর তৈরি
সেটআপ: বর্তমান ঘরটি উপরের বাম ঘরে সেট করুন।
- ঘরের জন্য একটি বৈধ কক্ষের ধরণ পান (যেখানে বৈধ কক্ষের ধরণটি অন্ধকূপের বাইরে প্রস্থান না করে এমন একটি প্রকার এবং যেখানে উপরের কক্ষের প্রস্থানটি এবং বাম দিকে ঘরের সাথে মেলে এমন প্রস্থান রয়েছে Only কেবল উপরে এবং নীচে চেক করতে হবে নীচে পদক্ষেপ 2 কারণে বাম)।
- ঘরটি নীচে রাখুন এবং এক-ধাপে এক্স-সমন্বিত স্থির করুন advance যদি x- স্থানাঙ্কটি অন্ধকূপটির প্রস্থকে ছাড়িয়ে যায়, x- স্থানাঙ্কটি 0 তে সেট করুন এবং y- স্থিতির এক ধাপ এগিয়ে যান। যদি y- স্থানাঙ্কটি অন্ধকূপটির উচ্চতা ছাড়িয়ে যায় তবে আমাদের কাজ শেষ।
- # 1 থেকে পুনরাবৃত্তি করুন।
আমি তখন সমস্ত কক্ষগুলি সংযুক্ত আছে কিনা তা যাচাই করে দেখি যদি সেগুলি সবগুলি সংযুক্ত না থাকে তবে আমি একটি দ্বিতীয় অ্যালগরিদম চালিত করি যে, অন্ধকারাচ্ছন্ন বিন্যাসের ক্ষেত্রে একটি সেক্সিবিহীন তবে অবশ্যই যথেষ্ট ভাল পদ্ধতিতে কক্ষগুলির মধ্য দিয়ে যায় এবং সেগুলি পরিবর্তন করে যাতে সমস্ত শেষ হয় সংযুক্ত হচ্ছে আপ।
সমস্ত কক্ষ সংযুক্ত আছে কিনা তা পরীক্ষা করা হচ্ছে
সেটআপ: পাথের প্রতিনিধিত্ব করে পূর্ণসংখ্যার একটি 2D মানচিত্র তৈরি করুন এবং "অপ্রসারণিত" (এখনও ট্র্যাভারসড হয়নি) মান, -1 এ এন্ট্রিগুলি আরম্ভ করুন। একটি সূচনা পথ সূচক পূর্ণসংখ্যা সেট করুন যা বর্তমানের পাথটিকে ট্র্যাক করে রাখে ১ এ। বর্তমান কক্ষটি চেক করার জন্য কক্ষের স্ট্যাকে যুক্ত করে উপরের বাম ঘরে সেট করুন।
- যদি স্ট্যাকটিতে চেক করার জন্য কক্ষ থাকে তবে পপ করুন এটি ঘরের পাথ সূচিটিকে বর্তমানের পথ সূচককে সেট করে। যদি স্ট্যাকটিতে কোনও কক্ষ না থাকে তবে পাথ সূচকটি বাড়িয়ে নিন এবং কলাম, সারিতে সারি কলাম দ্বারা অগ্রসর হয়ে একটি ঘর পাওয়ার চেষ্টা করুন যতক্ষণ না আমরা এমন একটি ঘর পাই যা এখনও প্রক্রিয়া করা হয়নি। যদি কোনও রুম না পাওয়া যায় তবে আমাদের কাজ শেষ।
- বামে রুমের একটি প্রস্থান আছে কিনা তা পরীক্ষা করে দেখুন। যদি এটি ইতিমধ্যে সেখানে না থাকে তবে যদি এটি স্ট্যাকের সাথে বাম ঘরটি যুক্ত করে।
- নীচে, ডান এবং উপরের দিকনির্দেশের জন্য দ্বিতীয় ধাপটি পুনরাবৃত্তি করুন (যেহেতু আমরা একটি স্ট্যাক ব্যবহার করছি যার অর্থ ঘরগুলি ঘড়ির কাঁটার দিক দিয়ে ক্রমযুক্ত, উপরের দিক দিয়ে শুরু করা)।
- পদক্ষেপ 1 থেকে পুনরাবৃত্তি করুন।
- পাথ সূচকগুলির গণনা যদি একের বেশি হয় তবে সংযোগ বিচ্ছিন্ন কক্ষ রয়েছে।
যদি সেখানে সংযোগ বিচ্ছিন্ন কক্ষগুলি থাকে তবে আমি কক্ষগুলি তাদের পথ সূচক অনুসারে ভাগ করে নেব, সবচেয়ে বড় পাথের সূচক পান এবং অন্যান্য কক্ষগুলিকে সেই কক্ষে সংযুক্ত করুন। এটি একটি অগ্রগতি সম্পন্ন কাজ, তবে আমার (বর্তমান, "বর্বর") পরিকল্পনাটি হ'ল রুম গ্রুপের প্রতিটি কক্ষটি (প্রথমটি বাদে) বিগজেট রুমের গ্রুপের অনুভূমিক বা উল্লম্ব পথ আছে কিনা তা পরীক্ষা করে দেখার জন্য এবং যদি তা হয় তবে কক্ষগুলি অভ্যন্তরীণভাবে ইনজেকশন / আপডেট করে সেখানে একটি অনুভূমিক / উল্লম্ব পথ তৈরি করুন। পাখলান পুনরাবৃত্তি. কুরুচিপূর্ণ, হ্যাঁ, তবে এটি এমন কিছু যা ভিজ্যুয়াল প্যাটার্নের ক্ষেত্রে বিবেচনাযোগ্য হবে না তাই এটি সেই অর্থে কার্যকর হয়।