একটি উপায় হ'ল বর্তমান এবং পূর্ববর্তী ইনপুট রাজ্যগুলি সংরক্ষণ করা এবং প্রতিবার আপনি যখন ইনপুটটি পোল করেন তখন সেগুলি তুলনা করুন।
যে কী টিপতে পারা যায় তার জন্য, সর্বশেষ সময়টির একটি টাইমস্ট্যাম্প রয়েছে এমন একটি বস্তু সংরক্ষণ করুন যা কীটি ডাউন স্টেট থেকে একটি আপ স্টেটে স্যুইচ করেছে।
প্রতিটি পোলে এই জিনিসগুলি করে আপডেট করুন:
void update(){
some_key_has_been_pressed = false;
foreach(key in keys){
if(previous_input[key].Down && current_input[key].Up){
keys[key].up_timestamp = current_time();
}
if(current_input[key].Down){
keys[key].down_timestamp = current_time();
some_key_has_been_pressed = true;
}
}
}
এখন আপনি সামগ্রীর সামগ্রীর বিপরীতে আপনার কম্বোসগুলিকে মেলে ধরতে পারেন keys
।
প্রতিটি কম্বোয়ের জন্য একটি কম্বো অবজেক্ট থাকুন এবং প্রতিটি সমীক্ষায় প্রতিটি কম্বো অবজেক্টে কল (আপডেট) কল করুন।
কম্বো অবজেক্টের আপডেট () পদ্ধতিটি কম্বোর সাথে প্যাটার্নের সাথে মিলবে, যা পরীক্ষা করে কম্বোয়ের জন্য প্রয়োজনীয় সমস্ত শর্তাদি সন্তুষ্ট কিনা if অর্থাৎ কম্বোর জন্য এখন পর্যন্ত সমস্ত কী-টি টাইমস্ট্যাম্পগুলি যথাযথভাবে রয়েছে এবং কম্বোটি ভেঙে ফেলতে পারে এমন কোনও অন্য কী এই ফ্রেমটি টিপেনি। প্রতিটি শর্ত পূরণের জন্য, পরের শর্তটিতে চেক করতে কম্বো অবজেক্টে একটি কাউন্টার বাড়ান। কম্বোতে সমস্ত শর্ত পূরণ হওয়ার পরে কম্বোটি যে পদ্ধতিটি সম্পাদন করবে তা কল করুন। some_key_has_been_pressed == true
কম্বোর পরবর্তী শর্তযুক্ত কীটি যদি টিপে না দেওয়া হয়, তবে কম্বোর সন্তুষ্ট অবস্থার বিপরীতে 0 এ পুনরায় সেট করুন।
উপরেরটি আমার পছন্দসই পদ্ধতি, কারণ এটি কার্যকর করা সহজ, বজায় রাখা সহজ, দক্ষ এবং অত্যন্ত মডুলার।
তবে অন্য একটি ভাল পদ্ধতির জন্য, সি # তে লেখা এক্সএনএ ইনপুট সিকোয়েন্স নমুনাটি পরীক্ষা করে দেখুন এবং যুক্তিটি সম্ভবত আপনি যে ভাষা ব্যবহার করছেন তা স্থানান্তরযোগ্য।