Bunun bir yolu, geçerli ve önceki giriş durumlarını saklamak ve girişi her yokladığınızda bunları karşılaştırmaktır.
Basılabilen her anahtar için, anahtarın aşağı durumdan yukarı duruma geçtiği son kez zaman damgasına sahip bir nesneyi saklayın.
Bu nesneleri her ankette yaparak güncelleyin:
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;
}
}
}
Artık desenlerinize göre kombinasyonlarınızı eşleştirebilirsiniz keys
.
Her bir açılan için bir birleşik nesne bulun ve her bir yoklamadaki her bir açılan nesne üzerinde update () öğesini çağırın.
Bir açılan nesnenin update () yöntemi, açılanla eşleşecek şekilde kalıp oluşturur ve açılan için gerekli tüm koşulların bu ankette karşılanıp karşılanmadığını kontrol eder. Yani kombo için şimdiye kadarki tüm tuş zaman damgaları sırayla ve komboyu kıracak başka bir tuşa bu kareye basılmadı. Karşılaşılan her koşul için, birleşik nesnede bir sayacı denetlenecek bir sonraki koşula yükseltin. Tüm koşullar bir birleşik girişte karşılandığında, birleşik girişin gerçekleştirmesi gereken yöntemi çağırın. Eğer some_key_has_been_pressed == true
ancak combo için bir sonraki durumdur tuşuna basıldığında edilmedi, daha sonra 0 olarak combo en memnun durum sayacını sıfırlayın.
Yukarıdakiler benim tercih ettiğim yöntemdir, çünkü uygulanması basit, bakımı kolay, verimli ve oldukça modülerdir.
Ancak başka bir iyi yöntem için, C # ile yazılmış XNA giriş dizisi örneğine bakın ve mantık muhtemelen kullandığınız dile aktarılabilir.