সংলগ্ন টাইলগুলির উপর ভিত্তি করে টাইল চয়ন করুন


10

আমি একটি টাইল্ড মানচিত্র সম্পাদকে কাজ করছি, এবং সংলগ্ন টাইলগুলির উপর ভিত্তি করে আমাকে স্বয়ংক্রিয়ভাবে টাইলগুলি বেছে নেওয়া দরকার। উদাহরণস্বরূপ, রাস্তার টাইল স্থাপন করার সময়, অন্য রোড টাইলের পাশে, দু'জনকেই ওরিয়েন্টেড করা দরকার যাতে তারা একটি অবিচ্ছিন্ন রাস্তা তৈরি করে। যদি তাদের চারপাশে অন্যান্য রাস্তা থাকে, তবে আমাদের কোণার বা ছেদ টাইলস ব্যবহার করতে হতে পারে।

কেউ কি এটি করার জন্য কিছু অ্যালগরিদমের সুপারিশ করতে পারে? গেমটি একটি 8-দিকীয় বর্গাকার টাইল্ড মানচিত্র ব্যবহার করে।


ব্যবহারকারী যখনই একটি নতুন টাইল রাখে এবং আশেপাশে নতুন টাইলটি প্রাচীরের চারপাশের 8 টি টাইল পরীক্ষা করে দেখতে না পারেন? অবশ্যই আপনাকে প্রতিটি টাইলের উপর কিছু অতিরিক্ত তথ্য সঞ্চয় করতে হবে যেমন ওরিয়েন্টেশন এবং টাইপ।
জিয়াওচুয়ান ইউ

আমি আশেপাশের সমস্ত টাইল পরীক্ষা করছি, তবে কীভাবে সমস্ত টাইল সংমিশ্রণ পরিচালনা করতে হয় তা আমি জানতাম না। উদাহরণস্বরূপ, আপনার কাছে বেছে নেওয়ার জন্য সাতটি সম্ভাব্য টাইল রয়েছে (অনুভূমিক, উল্লম্ব, চারটি কোণ এবং একটি ক্রস)। আমি জটিল সুইচ স্টেটমেন্টগুলি ব্যবহার করার কথা ভেবেছিলাম, তবে এটি ভুল অনুভব করেছে।
alekop

উত্তর:


18

সম্ভবত এটি সাধারণত এটি সম্পন্ন হয়। আপনার কাছে বিভিন্ন টাইলসের তালিকা রয়েছে যা তাদের সমস্ত সম্ভাব্য দিকনির্দেশে একটি রোড টাইলকে উপস্থাপন করে। বাম থেকে ডানে, চারটি কোণ, উপরে থেকে নীচে, যাই হোক না কেন। এখন আপনি সেই সমস্ত টাইলকে প্রতিটি বাইট দিয়ে সূচক করবেন। 8 টি বিট, প্রতিটি দিকের জন্য একটি। এটি হ্যাশম্যাপে বা ফাইলের নামে হতে পারে ... তবে আপনি এটি করতে চান।

সুতরাং আপনার এটি আছে:

এখানে চিত্র বর্ণনা লিখুন

উপরের টাইলের বাইট কোডটি 00000000 । তারপরে আপনার টাইলটি বাম থেকে ডানে (বা ডান থেকে বাম) যায় এমন:

এখানে চিত্র বর্ণনা লিখুন

এই টাইলের জন্য বাইট কোডটি 10001000 বা 136। অন্য উদাহরণ হিসাবে, একটি তিনটি পথ ছেদ দেখা যাক:

এখানে চিত্র বর্ণনা লিখুন

এই টাইলের বাইট কোডটি 10101000

আপনি সম্ভবত দেখতে পাবেন আমি কোথায় যাচ্ছি। আপনি সংযোগ উপস্থাপন করে বাইটে বিট পজিশন সেট করেছেন। আমি আগে দেখেছি এমন কিছু / যদি চেইন কিছু বড় করার চেষ্টা করার চেয়ে এটি অনেক ভাল। আপনি যখন কোনও টাইল রাখার সন্ধান করছেন তখন তার চারপাশের টাইলগুলি পরীক্ষা করুন এবং পথে বাইট তৈরি করুন। টাইলগুলির জন্য 1 টি রাস্তা আছে (বা আপনি যা সংযোগ করতে চাইছেন) এবং 0 টি টাইলসের জন্য সেট করুন। আপনার কাজ শেষ হয়ে গেলে আপনার প্রয়োজনীয় টাইলের জন্য বাইট কোডটি থাকবে have

মনে রাখবেন যে সম্পদ তৈরি করার সময় আপনি এটিকে সঠিক বাইট কোডটি ঘোরানো এবং ঠিক করেই প্রচুর পরিমাণে পুনরায় ব্যবহার করতে পারেন।

সম্পাদনা : আপডেট চিত্রগুলি কম কৃপণ হতে। হ্যাঁ এগুলি আগের চেয়ে ভাল।


খুব সুন্দর! সহজ এবং দক্ষ। আমি বুঝতে পারি না যে আপনি কীভাবে এই বিটমাস্কগুলি পাচ্ছেন। উদাহরণস্বরূপ আপনি কীভাবে 3 এবং 7 নম্বর থেকে 17 এর বিটমাস্ক পাচ্ছেন?
আলেকপ

কিছু মনে করবেন না, আমি দেখছি আপনি কি করছেন। আপনি 3 এবং 7 বিট সেট করছেন, তবে আপনি ডান পরিবর্তে বাম থেকে গণনা করছেন।
alekop

ওহ, কত বিব্রতকর। আমার এডিয়েননেস সব মিশে গেছে। এটা একটা দুর্ঘটনা আমি ঠিক করবো!
মাইকেলহাউস

দুর্দান্ত, এখন আমার মন্তব্যে কোন লাভ হয় না! : p শুধু মজা করছি, তোমার উত্তরের জন্য ধন্যবাদ thanks ঠিক এটাই আমি খুঁজছিলাম।
alekop

1
ভাল ব্যাখ্যা। সত্যিকারের কোড এবং টাইল রেজোলিউশনের সাথে একই কৌশলটি কভার করে আমার একটি ব্লগ পোস্ট রয়েছে: kitsu.github.io/2016/07/18/roguelike-project-05
kitsu.eb

3

আমি আপনাকে আরও তথ্যের জন্য এই সহজ পৃষ্ঠাটি একবার দেখার পরামর্শ দিচ্ছি, কারণ এটি আপনি যা করছেন তার প্রতিটি দিক এবং সেই সাথে কয়েকটি সম্ভাব্য অপ্টিমাইজেশান সম্পর্কে দুর্দান্ত বিবরণে যায়: http://www.angryfishstudios.com / 2011/04 / এডভেন্ঞার ট্যুরিজম-ইন-bitmasking /

টিএলডিআর হ'ল আপনি প্রতিটি সংলগ্ন ঘরটি অনুসন্ধান করে এবং বিটফিল্ড / বাইটে সংমিশ্রণটি সংরক্ষণ করুন, তারপরে এটি একটি মানচিত্রের মাধ্যমে পাস করুন যা 0 ~ 255 থেকে একটি সংখ্যাকে 0 ~ 47 এর মান হিসাবে রূপান্তর করে, যা একটি অনন্য চিত্রের সাথে মিলে যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.