অবশ্যই আপনি পারবেন, আমি কেবল ভাবছি যে এটি এমনভাবে ডিজাইন করা যুক্তিসঙ্গত।
আমি একটি ব্রেকআউট ক্লোন তৈরি করছি এবং কিছু ক্লাস ডিজাইন করছিলাম। আমি উত্তরাধিকার ব্যবহার করতে চাইছিলাম, যদিও আমার সিটি ++ তে যা শিখেছে তা প্রয়োগ করতে আমার দরকার নেই। আমি ক্লাস ডিজাইন সম্পর্কে ভাবছিলাম এবং এরকম কিছু নিয়ে এসেছি:
গেমঅজেক্ট -> বেস ক্লাস (এক্স এবং ওয়াই অফসেটের মতো ডেটা সদস্য এবং এসডিএল_সার্ফেসের একটি ভেক্টর সমন্বিত *
মুভেবলঅবজেক্ট: গেমঅজেক্ট -> অ্যাবস্ট্রাক্ট ক্লাস + গেমওজেক্টের উত্পন্ন শ্রেণি (একটি পদ্ধতি অকার্যকর পদক্ষেপ () = 0;)
নন-মোভেবলঅবজেক্ট: গেমবজেক্ট -> খালি ক্লাস ... কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর ছাড়া অন্য কোনও পদ্ধতি বা ডেটা সদস্য নেই (কমপক্ষে এখনকার জন্য?)।
পরে আমি ননমোভেবলবজেক্ট থেকে টাইলসেট: ননমোভেবলঅবজেক্টের মতো ক্লাস নেওয়ার পরিকল্পনা করছিলাম। আমি কেবল ভাবছিলাম যে "খালি" বিমূর্ত ক্লাসগুলি বা কেবল খালি ক্লাসগুলি প্রায়শই ব্যবহৃত হয় ... আমি লক্ষ্য করেছি যে আমি যেভাবে এটি করছি, আমি কেবল শ্রেণিবদ্ধকরণের জন্য ক্লাস ননমোভেবলঅবজেক্ট তৈরি করছি।
আমি জানি আমি কেবল ব্রেকআউট ক্লোন তৈরি করার জন্য জিনিসগুলিকে ওভারথিংক করছি, তবে আমার ফোকাস খেলাটির দিকে কম এবং উত্তরাধিকার ব্যবহার এবং কিছু ধরণের গেম ফ্রেমওয়ার্ক ডিজাইন করার দিকে বেশি।
MovableObject
নাNonMovableObject
, তাদের উভয়েরই অবস্থান রয়েছে; যেমন, তারা উভয়ই কোড দ্বারা উপভোগযোগ্য হওয়া উচিত যা উদাহরণস্বরূপ কোনও বস্তুর দিকে কোনও দৈত্যের লক্ষ্য নির্দেশ করতে চায় that বস্তুটি স্থানান্তরিত হতে পারে কিনা তা বিবেচনা ছাড়াই।