এটি বেশিরভাগই এফপি সম্পর্কে একটি তাত্ত্বিক প্রশ্ন, তবে আমি আমার বক্তব্য চিত্রিত করার জন্য পাঠ্য অ্যাডভেঞ্চারগুলি (পুরাতন-স্কুল জোরকের মতো) নেব। আপনি কীভাবে এফপির সাথে রাষ্ট্রীয় সিমুলেশন মডেল করবেন সে সম্পর্কে আমি আপনার মতামত জানতে চাই।
পাঠ্য অ্যাডভেঞ্চারগুলি সত্যই OOP এর জন্য কল করে। উদাহরণস্বরূপ, সমস্ত "কক্ষগুলি" একটি Roomশ্রেণীর উদাহরণ , আপনার কাছে বুনিয়াদি Itemক্লাস থাকতে পারে এবং ইন্টারফেসগুলি Item<Pickable>আপনি বহন করতে পারেন এমন জিনিসগুলির জন্য পছন্দ করতে পারেন ইত্যাদি।
এফপি-র ওয়ার্ল্ড মডেলিং আলাদাভাবে কাজ করে, বিশেষত যদি আপনি এমন একটি পৃথিবীতে অপরিবর্তনীয়তা প্রয়োগ করতে চান যা গেমের অগ্রগতির সাথে সাথে পরিবর্তন করতে হবে (বস্তুগুলি সরানো হয়, শত্রুরা পরাজিত হয়, স্কোরিং বৃদ্ধি পায়, প্লেয়ার তার অবস্থান পরিবর্তন করে)। আমি একক একটি বৃহত অবজেক্টটি কল্পনা করেছি Worldযার মধ্যে এটি রয়েছে: আপনি যে কক্ষগুলি ঘুরে দেখতে পারেন, সেগুলি কীভাবে সংযুক্ত করা হয়, খেলোয়াড় কী বহন করে চলেছে, কী লিভারগুলি ট্রিগার করা হয়েছে what
আমি মনে করি যে একটি বিশুদ্ধ পদ্ধতির মূলত এই বড় অবজেক্টটিকে যে কোনও ফাংশনে স্থান দেওয়া এবং এটি তাদের দ্বারা ফিরিয়ে দেওয়া (সম্ভবত সংশোধিত) করা হবে। উদাহরণস্বরূপ, আমার একটি moveToRoomফাংশন রয়েছে যা নতুন ঘরে পরিবর্তিত হয়ে Worldএগুলি পায় এবং ফেরত দেয় ।World.player.locationWorld.rooms[new_room].visited = True
এমনকি এটি যদি আরও "সঠিক" উপায় হয় তবে মনে হয় এটি এর জন্য খাঁটিতা প্রয়োগ করছে। প্রোগ্রামিং ল্যাঙ্গুয়েজের উপর নির্ভর করে এই সম্ভাব্য খুব বড় Worldঅবজেক্টটি পিছনে পিছনে যেতে ব্যয়বহুল হতে পারে। এছাড়াও, প্রতিটি ফাংশনটিতে যে কোনও Worldঅবজেক্টে অ্যাক্সেস থাকা দরকার । উদাহরণস্বরূপ, কোনও রুম অ্যাক্সেসযোগ্য হতে পারে বা অন্য ঘরে ট্রিগার হওয়া লিভারের উপর নির্ভর করে না কারণ এটি প্লাবিত হতে পারে তবে প্লেয়ার যদি লাইফ জ্যাকেট বহন করে তবে এটি যেভাবেই প্রবেশ করতে পারে। কোনও দানব আক্রমণাত্মক হতে পারে বা খেলোয়াড় তার চাচাত ভাইকে অন্য ঘরে হত্যা করেছে কিনা তার উপর নির্ভর করে। এর অর্থ এই যে roomCanBeEnteredফাংশন অ্যাক্সেস করা প্রয়োজন World.player.invetoryএবং World.rooms, describeMonsterঅ্যাক্সেস করা প্রয়োজন World.monstersএবং তাই (মূলত, আপনি অবশ্যইপুরো লোড চারপাশে পাস)। এটি সত্যিই আমার কাছে একটি বিশ্বব্যাপী পরিবর্তনশীল জন্য কল করার জন্য বলে মনে হচ্ছে, এমনকি এটি বিশেষত এফপিতে ভাল প্রোগ্রামিং শৈলী।
আপনি কীভাবে এই সমস্যার সমাধান করবেন?