首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在基于html的网站中添加konami代码?

如何在基于html的网站中添加konami代码?
EN

Stack Overflow用户
提问于 2015-07-25 21:16:43
回答 13查看 22.1K关注 0票数 21

我被要求在我目前正在开发的一个网站中实现Konami代码。它应该执行以下操作:

  1. 更改背景图像
  2. 播放声音
  3. 带来一些弹出式

使用javascript实现这一点的最简单方法是什么?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2015-07-25 21:53:39

将下面的代码放在文件js/konami.js中,并在html文件的主体中引用它,如下所示:<script src="js/konami.js"></script>

代码语言:javascript
复制
// a key map of allowed keys
var allowedKeys = {
  37: 'left',
  38: 'up',
  39: 'right',
  40: 'down',
  65: 'a',
  66: 'b'
};

// the 'official' Konami Code sequence
var konamiCode = ['up', 'up', 'down', 'down', 'left', 'right', 'left', 'right', 'b', 'a'];

// a variable to remember the 'position' the user has reached so far.
var konamiCodePosition = 0;

// add keydown event listener
document.addEventListener('keydown', function(e) {
  // get the value of the key code from the key map
  var key = allowedKeys[e.keyCode];
  // get the value of the required key from the konami code
  var requiredKey = konamiCode[konamiCodePosition];

  // compare the key with the required key
  if (key == requiredKey) {

    // move to the next key in the konami code sequence
    konamiCodePosition++;

    // if the last key is reached, activate cheats
    if (konamiCodePosition == konamiCode.length) {
      activateCheats();
      konamiCodePosition = 0;
    }
  } else {
    konamiCodePosition = 0;
  }
});

function activateCheats() {
  document.body.style.backgroundImage = "url('images/cheatBackground.png')";

  var audio = new Audio('audio/pling.mp3');
  audio.play();

  alert("cheats activated");
}

编辑:将顺序改为b,a,而不是a,b。谢谢您的评论!

编辑2:在调用activateCheats后将konamiCodePosition重置为0。谢谢你的评论!

票数 43
EN

Stack Overflow用户

发布于 2017-08-09 03:45:49

紧凑版本:

代码语言:javascript
复制
function onKonamiCode(cb) {
  var input = '';
  var key = '38384040373937396665';
  document.addEventListener('keydown', function (e) {
    input += ("" + e.keyCode);
    if (input === key) {
      return cb();
    }
    if (!key.indexOf(input)) return;
    input = ("" + e.keyCode);
  });
}

onKonamiCode(function () {alert('\o/')})

票数 19
EN

Stack Overflow用户

发布于 2018-02-14 08:29:37

我自己的简洁和干净的版本的灵感来自于这里的答案:

代码语言:javascript
复制
let cursor = 0;
const KONAMI_CODE = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
document.addEventListener('keydown', (e) => {
  cursor = (e.keyCode == KONAMI_CODE[cursor]) ? cursor + 1 : 0;
  if (cursor == KONAMI_CODE.length) activate();
});

在这种情况下,activate()函数在触发时被调用。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31626852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档