আমি জানি যে পাইথন পদ্ধতি ওভারলোডিং সমর্থন করে না, তবে আমি এমন একটি সমস্যার মুখোমুখি হয়েছি যা আমি খুব সুন্দর পাইথোনিক উপায়ে সমাধান করতে পারি না।
আমি এমন একটি গেম তৈরি করছি যেখানে কোনও চরিত্রের বিভিন্ন ধরণের বুলেট অঙ্কুর দরকার হয় তবে আমি এই বুলেটগুলি তৈরির জন্য কীভাবে বিভিন্ন ফাংশন লিখব? উদাহরণস্বরূপ ধরুন আমার একটি ফাংশন রয়েছে যা একটি নির্দিষ্ট গতি দিয়ে পয়েন্ট এ থেকে বিতে বুলেট ভ্রমণ করে। আমি এই মত একটি ফাংশন লিখতে হবে:
def add_bullet(sprite, start, headto, speed):
... Code ...
তবে বুলেট তৈরির জন্য আমি অন্যান্য ফাংশন লিখতে চাই:
def add_bullet(sprite, start, direction, speed):
def add_bullet(sprite, start, headto, spead, acceleration):
def add_bullet(sprite, script): # For bullets that are controlled by a script
def add_bullet(sprite, curve, speed): # for bullets with curved paths
... And so on ...
এবং তাই অনেক বৈচিত্র সঙ্গে। এত কিওয়ার্ড আর্গুমেন্ট ব্যবহার না করে এটি করার আরও ভাল উপায় আছে কি এর দ্রুত কৃপণতা পেতে থাকে? প্রতিটি ফাংশন পুনঃনামকরণ করা কারণ আপনি হয় পেতে খুব সুন্দর খারাপ add_bullet1
, add_bullet2
অথবা add_bullet_with_really_long_name
।
কিছু উত্তর সম্বোধন করতে:
না আমি বুলেট শ্রেণির শ্রেণিবিন্যাস তৈরি করতে পারি না কারণ এটি খুব ধীর। বুলেট পরিচালনার জন্য আসল কোডটি সিতে রয়েছে এবং আমার ফাংশনগুলি সি এপিআই এর চারপাশে মোড়ক রয়েছে।
আমি কীওয়ার্ড আর্গুমেন্ট সম্পর্কে জানি কিন্তু প্যারামিটারগুলির সমস্ত ধরণের সংমিশ্রণের জন্য পরীক্ষা করা বিরক্তিকর হয়ে উঠছে, তবে ডিফল্ট আর্গুমেন্টগুলি বরাদ্দ করতে সহায়তা করে
acceleration=0
default value + if + else
সি ++ এর মতোই ব্যবহার করতে হবে। এটি খুবই কিছু বিষয় সি ++ পাইথন চেয়ে ভাল পাঠযোগ্যতা আছে এক ...
script, curve
হয়, তাদের কি সাধারণ পূর্বপুরুষ থাকে, কোন পদ্ধতি তারা সমর্থন করে। হাঁস-টাইপিংয়ের সাথে, ক্লাস ডিজাইনের জন্য তাদের কী কী পদ্ধতিগুলি সমর্থন করা প্রয়োজন তা নির্ধারণ করা আপনার পক্ষে। সম্ভবত Script
কিছু ধরণের টাইমস্টেপ-ভিত্তিক কলব্যাক সমর্থন করে (তবে এটি কোন বস্তুটি ফিরে আসবে? সেই টাইমস্টেপের অবস্থান? সেই টাইমস্টেপের ট্র্যাজেক্টোরি?)। সম্ভবত start, direction, speed
এবং start, headto, spead, acceleration
উভয়ই ট্র্যাজিকোলজির প্রকারের বর্ণনা দেয় তবে পুনরায় গ্রহণযোগ্য শ্রেণীর নকশা করা কীভাবে সেগুলি আনপ্যাক করা যায় এবং কীভাবে এটি প্রক্রিয়া করা যায় তা আপনার উপর নির্ভর করে।