Salah satu caranya adalah menyimpan status input saat ini dan sebelumnya, dan membandingkannya setiap kali Anda polling input.
Untuk setiap tombol yang dapat ditekan, simpan objek yang memiliki stempel waktu terakhir kali bahwa tombol tersebut beralih dari keadaan turun ke keadaan naik.
Perbarui objek-objek ini dengan melakukan ini di setiap jajak pendapat:
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;
}
}
}
Sekarang Anda dapat mencocokkan pola kombo Anda dengan konten keys
.
Memiliki objek kombo untuk setiap kombo, dan panggilan pembaruan () pada setiap objek kombo di setiap jajak pendapat.
Metode pembaruan objek kombo () akan berpola sesuai dengan kombo, memeriksa apakah semua kondisi yang diperlukan untuk kombo puas pada jajak pendapat ini. Yaitu semua cap waktu tombol untuk kombo sejauh ini dalam urutan, dan tidak ada tombol lain yang akan merusak kombo telah menekan bingkai ini. Untuk setiap kondisi yang dipenuhi, tambahkan penghitung di objek kombo ke kondisi berikutnya untuk diperiksa. Ketika semua kondisi dipenuhi dalam sebuah kombo, panggil metode yang kombo harus lakukan. Jika some_key_has_been_pressed == true
tetapi tombol yang merupakan kondisi berikutnya untuk kombo belum ditekan, maka setel ulang penghitung kondisi puas kombo ke 0.
Di atas adalah metode yang saya sukai, karena mudah diimplementasikan, mudah dipelihara, efisien, dan sangat modular.
Namun untuk metode lain yang bagus, periksa sampel urutan input XNA , yang ditulis dalam C #, dan logikanya kemungkinan ditransfer ke bahasa yang Anda gunakan.