2012-03-12 107 views
6

我想创建一个.js文件的网站,当进入konami代码上,上,下,下,左,右,左,右,B,A,开始(输入)它会嵌入视频。 但是,当进入正确的键时,网页应该显示“继续前进”的内容,如果输入了错误的键,它应该显示“错误,再试一次”,并允许它们重新开始。进步konami代码

我已经管理得到JavaScript的工作,在输入正确的代码时显示警报,输入错误的代码显示不同的代码。

我已经manged使用在线资源,但他们没有解释如何得到错误的获得这么多的代码,再试部分

if (window.addEventListener) { 
    var keys = [], 
    konami = "38,38,40,40,37,39,37,39,66,65,13"; 

    window.addEventListener("keydown", function(e){ 
    keys.push(e.keyCode); 


    if (keys.toString().indexOf(konami) >= 0) 
    {    
     alert('Right'); 
     keys = []; 
    }; 

    if (keys.toString().indexOf(konami) < 0) 
    { 
     alert('Wrong'); 
     keys = []; 
    } 
}, true); 

};

任何帮助将不胜感激。

回答

7
if (window.addEventListener) { 
    var index = 0; 
    var konami = [38,38,40,40,37,39,37,39,66,65,13]; 

    window.addEventListener("keydown", function(e){ 
     if (e.keyCode === konami[index]) 
     { 
      index++; //valid key at the valid point 

      if (index == konami.length) 
      { 
       alert("Correct"); 
      } else { 
       alert("Keep going"); 
      } 
     } else { 
      // incorrect code restart 
      index = 0; 
      alert("Wrong"); 
     } 
    }); 
} 
+0

非常感谢您的帮助,所有的OTH呃给出的答案和工作,但这是我能理解的唯一代码。顺便说一下,有一种方法可以嵌入一个YouTube视频,一旦输入正确的代码就会显示出来。或者嵌入代码必须写在.html文件中 – Calsolum 2012-03-12 23:09:38

+2

这是有争议的,否则你应该包含'return'键(13) – NicolasMoise 2014-03-13 20:20:17

2

你可以做类似

if (window.addEventListener) { 
    var keys = [], 
    konami = "38,38,40,40,37,39,37,39,66,65,13".split(','); 

    window.addEventListener("keydown", function(e){ 
    keys.push(e.keyCode); 
     console.log(e.keyCode); 
    var lengthOfKeys = keys.length -1; 


    if (konami[lengthOfKeys] == keys[lengthOfKeys]) 
    {    
     alert('Right'); 
     if(konami.length === keys.length){ 
      alert('complete!'); 
     } 

    }else{ 
     alert('Wrong'); 
     keys = []; 
    } 
}, true); 
}; 

小提琴这里http://jsfiddle.net/b6kuZ/

0

这个工作对我来说:

if (window.addEventListener) { 
    var keys = [], 
    konami = "38,38,40,40,37,39,37,39,66,65,13"; 
    konami_arr = konami.split(','); 

    window.addEventListener("keydown", function(e){ 
     keys.push(e.keyCode); 

     var position = keys.length-1; 

     if(keys[position ] != konami_arr[position]) 
     { 
      alert('Wrong'); 
      keys = []; 
     } 
     else if (keys.join(',') == konami) 
     {    
      alert('Right'); 
      keys = []; 
     }; 
    }, true); 
} 

​jsFiddle exmaple