Skip to main content

[JS30] Day12: Key Sequence Detection

偵測一連串的按鍵輸入,這讓我想到小時候玩 LF2,一開始要先輸入lf2.net就可以使用隱藏腳色。

lf2 官網

JavaScript

密碼為"steventhibe",在每次按鍵方開時,都會呼叫函式。在第六行程式碼中,我們透過 splice 取得倒數幾個的字串,如果包括"steventhibe"就會呼叫 cornify_add。

舉個例,當我輸入"iamsteventhibe",會一個個被存入 pressed,["i","a","m","s","t","e","v","e","n","t","h","i","b","e"],在 pressed.length 超過 11 個的時候,splice(-11 - 1, 12 - 11)會將第一個字串刪去,後面每次多輸入一個字串,都會刪去第一個字串,當剩餘的 11 個字串剛好包括"steventhibe"就會呼叫 cornify_add。

  const secret = "steventhibe";
const pressed = [];

window.addEventListener("keyup", (e) => {
pressed.push(e.key);
pressed.splice(-secret.length - 1, pressed.length - secret.length);
if (pressed.join("").includes(secret)) {
console.log("Ding Ding!!!");
cornify_add();
}
});

splice @MDN

kepup event @MDN