2016-04-03 26 views
-2

Doğru sayı kombinasyonunun oyuncuya düzeyi geçmesine yardımcı olacak bir efekt verdiği bir oyun yapmaya çalışıyorum. Bunu yapmak için planım, tuşa basıldığını test edecek ifadeler kullanıyor ve değişkenleri buna göre değiştiriyordu. Bu çok basit olmalı, ancak benim girişimlerim tatmin edici bir şekilde başarısız oldu, ancak bunu yeterince açıklayan bir sayfa bulamıyorum. Yani, javascript'te if ifadesi için bir sayı tuşunun basıncını nasıl algılayabileceğimi bilen var mı?If ifadesi için bir sayı tuşunun basılmasının algılanması

+1

Şu ana kadar kullandığınız kodu yükleyebilir misiniz? çalışan bir şey var mı? – JordanHendrix

+0

Bu kütüphane başlamak için iyi bir yer olabilir, ya da belki de kaldıraç - https://github.com/namuol/cheet.js – dmoo

+0

hiç bakmadın mı? Az önce 50 soru sordum: http://stackoverflow.com/questions/2297524/javascript-jquery-keypress-logging – JordanHendrix

cevap

0

Aradığınız şey belirli bir sayı dizisini girmekse, bir önbellek kullanmanız ve her tuş vuruşu kontrol etmeniz gerekir. İşte aşağıda bir örnek. Bu sırayla 1, sonra 2, sonra 3 istediğimi belirttim. Yanlış yapılması diziyi sıfırlar. Ayrıca tamamlandığında, bu durumda da sıfırlanır.

Bunu deneyin. Çalıştırın ve 1'e, sonra 2'ye sonra 3'e basın. Sıralamayı kesmek, yeniden başlatmanız gerektiği anlamına gelir.

//press 1, then 2 then 3 
 
var code = [49, 50, 51] 
 
var cache = []; 
 

 
function checkCode(eve) { 
 

 
    var keycode = eve.keyCode || eve.which; 
 

 
    if(keycode === cache.shift()){ 
 

 
     if(!cache.length){ 
 
     //resets if you did it. do not include if you want once. 
 
     replenishCache(); 
 

 
     //do whatever you do here. 
 
     doThing(); 
 
     } 
 

 
    } else { 
 
     replenishCache(); 
 
    } 
 
} 
 

 
function doThing(){ 
 
    alert('sequence entered'); 
 
} 
 

 
function replenishCache(){ 
 
    cache = code.slice(0); 
 
} 
 

 
replenishCache(); 
 

 
window.addEventListener('keypress', checkCode, false);

Bu kod, bu çerçeve veya modül veya desen bağlamında tamamen olmadığını ekleyecektir. Göstermek için pencereye bir olay ekledim. Bunu yaptığınız her şeye nasıl taşıyacağınızı düşünmeniz gerekecek. Örneğin, bu durumda sadece daha kapsamlı bir global işlevi çağırmak yerine, doThing bu durumda muhtemelen bunu bir çeşit eklentiye veya modüle geçirmelisiniz. Karakter kodları dizisi ile aynı şey.