আপনার কাজ হল একটি প্যারামিটারাইজড দ্বীপের একটি মডেল প্রোগ্রাম করা যেখানে অবস্থানগুলির একটি অ্যারে রয়েছে (উদাহরণস্বরূপ, একটি 100x20 ম্যাট্রিক্স)। অবস্থানগুলি উদ্ভিদ এবং প্রাণী দ্বারা জনবহুল হবে। প্রাণীরা করতে পারে:

  • গাছপালা এবং/অথবা অন্যান্য প্রাণী খান (যদি তাদের অবস্থানে উপযুক্ত খাবার থাকে),
  • সরান (প্রতিবেশী অবস্থানে),
  • বংশবিস্তার (যদি একটি অবস্থানে দুটি ধরণের থাকে),
  • ক্ষুধায় মারা যাবে বা খাওয়া হবে।

ওওপি

আপনার প্রাণীদের হোস্ট তৈরি করার সময়, আপনার যতটা সম্ভব OOP ব্যবহার করা উচিত: সমস্ত প্রজাতি একটি বিমূর্ত প্রাণী শ্রেণী থেকে উদ্ভূত হবে, যা সমস্ত প্রাণীর জন্য সাধারণ আচরণ ধারণ করবে। যদি নির্দিষ্ট প্রাণীদের খাওয়ানো, প্রজনন, চলাচল ইত্যাদির ক্ষেত্রে নির্দিষ্ট বৈশিষ্ট্য থাকে, তাহলে তাদের পশু শ্রেণীর পদ্ধতিগুলিকে অগ্রাহ্য করতে হবে।

আপনাকে যা করতে হবে তা এখানে:

1. একটি শ্রেণী অনুক্রম তৈরি করুন:

  • মাংসাশী : নেকড়ে , বোয়া , শিয়াল , ভালুক , ঈগল

  • তৃণভোজী : ঘোড়া , হরিণ , খরগোশ , ইঁদুর , ছাগল , ভেড়া , শুয়োর , মহিষ , হাঁস , শুঁয়োপোকা

  • গাছপালা

নীচের সারণীটি দেখায় যে একটি প্রাণী "খাদ্য" খাওয়ার কতটা সম্ভাবনা যদি এটি সেই "খাদ্য" হিসাবে একই স্থানে থাকে। আসুন পরিস্থিতিটি দেখি যেখানে "একটি নেকড়ে একটি খরগোশ খায়"। সারণীতে সংখ্যাটি 60। এর মানে হল যে যদি একটি নেকড়ে এবং খরগোশ একই অবস্থানে থাকে, তাহলে নেকড়েটি খরগোশকে খেয়ে ফেলার 60% সম্ভাবনা রয়েছে। আপনাকে একটি মাল্টিথ্রেডেড র্যান্ডম নম্বর জেনারেটর ব্যবহার করতে হবে ।

নেকড়ে বোয়া শিয়াল ভালুক ঈগল ঘোড়া হরিণ খরগোশ মাউস ছাগল ভেড়া শুয়োর মহিষ হাঁস শুঁয়াপোকা গাছপালা
নেকড়ে - 0 0 0 0 10 15 60 80 60 70 15 10 40 0 0
বোয়া 0 - 15 0 0 0 0 20 40 0 0 0 0 10 0 0
শিয়াল 0 0 - 0 0 0 0 70 90 0 0 0 0 60 40 0
ভালুক 0 80 0 - 0 40 80 80 90 70 70 50 20 10 0 0
ঈগল 0 0 10 0 - 0 0 90 90 0 0 0 0 80 0 0
ঘোড়া 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 100
হরিণ 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 100
খরগোশ 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
মাউস 0 0 0 0 0 0 0 0 - 0 0 0 0 0 90 100
ছাগল 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
ভেড়া 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
শুয়োর 0 0 0 0 0 0 0 0 50 0 0 - 0 0 90 100
মহিষ 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 100
হাঁস 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90 100
শুঁয়াপোকা 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

প্রাণীর বৈশিষ্ট্য:

পশু প্রতি ওজন, কেজি প্রতি অবস্থানে এই প্রজাতির প্রাণীর সর্বোচ্চ সংখ্যা সর্বোচ্চ গতি (অবস্থানের সংখ্যা) প্রতি টার্ন পশুকে সম্পূর্ণরূপে খাওয়ানোর জন্য প্রয়োজনীয় কিলোগ্রাম খাদ্যের সংখ্যা
নেকড়ে 50 30 3 8
বোয়া 15 30 1 3
শিয়াল 8 30 2 2
ভালুক 500 5 2 80
ঈগল 6 20 3 1
ঘোড়া 400 20 4 60
হরিণ 300 20 4 50
খরগোশ 2 150 2 0.45
মাউস 0.05 500 1 0.01
ছাগল 60 140 3 10
ভেড়া 70 140 3 15
শুয়োর 400 50 2 50
মহিষ 700 10 3 100
হাঁস 1 200 4 0.15
শুঁয়াপোকা 0.01 1000 0 0
গাছপালা 1 200 N/A N/A

2. একটি প্রাণীর অবশ্যই খাওয়া , প্রজনন এবং চলাচলের জন্য একটি দিক বেছে নেওয়ার পদ্ধতি থাকতে হবে ।

3. আপনি তৃণভোজী এবং মাংসাশী শ্রেণিতে খাওয়ার পদ্ধতি প্রয়োগ করতে পারেন। তবে সাবধান, তৃণভোজী হাঁস শুঁয়োপোকা খায় ।

4. নির্দিষ্ট প্রজাতির প্রতিনিধিত্বকারী নির্দিষ্ট শ্রেণিতে, আপনি প্রাণীর বৈশিষ্ট্য অনুসারে সমস্ত পদ্ধতি পরিবর্তন করতে পারেন।

5. আপনাকে কমপক্ষে 10টি তৃণভোজী প্রজাতি এবং 5টি মাংসাশী প্রজাতি তৈরি করতে হবে (আইটেম 1 এ বর্ণিত)।

মাল্টিথ্রেডিং

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

কাজের বাধ্যতামূলক অংশ:

  • পশু শ্রেণিবিন্যাস (OOP)
  • পশু আচরণ
  • মাল্টিথ্রেডিং
  • প্রতিটি পুনরাবৃত্তিতে দ্বীপের অবস্থার পরিসংখ্যান (কনসোলে প্রদর্শিত)

কাজের ঐচ্ছিক অংশ:

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

সেটিংস সম্পর্কে (যদি আপনি সেগুলি যুক্ত করার সিদ্ধান্ত নেন)

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

  • দ্বীপের আকার
  • সিমুলেশনে একটি ঘড়ি চক্রের সময়কাল
  • সিমুলেশনের শুরুতে প্রতিটি প্রজাতির প্রাণীর সংখ্যা
  • সিমুলেশন বন্ধ করার শর্ত (যেমন সমস্ত প্রাণী মারা গেছে)
  • প্রতিটি ধরণের প্রাণীর জন্য সন্তানের সংখ্যা

ইউনিকোড (যদি আপনি সিউডোগ্রাফিক্স করার সিদ্ধান্ত নেন)

আপনি প্রাণীদের চিত্রিত করার জন্য ইউনিকোড অক্ষর ব্যবহার করতে পারেন: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐛।