2014/07/03
Twitterのユニークな裏技、コナミコマンド等をJavaScriptで複数実装してみた
こんにちは、naouniverse( @naouniverse708 )です。
ネタとしてはとうに旬を過ぎたかもしれませんが、ブラウザ版Twitterでのユニークな裏技、「上上下下左右左右BA」と入力すると青い鳥マークが一回転するアレですが、当サイトでも実装を試してみました。
【上上下下左右左右BA】Twitter、コナミコマンドに対応してた | ねとらぼ
参考にした上記サイトの方法では、
- 配列の各要素に任意のキーコードを設定
- キー入力ごとに順番に配列の要素をチェックする
- 一致したらhitCountを増やし、一致しない場合はリセット
- hitCountが設定したキーコード数を超えたら何かしらの処理をさせる
要約するとこんな感じでしょうか。
それらを踏まえつつ、ちょっと違った方法も試しつつした結果、下記のような感じに落ち着きました。
document.onkeydown = commandCheck; var command = new Array(2); command[0] = "38;38;40;40;37;39;37;39;66;65;"; //コナミコマンド command[1] = "80;80;39;75;80;"; //瞬獄殺 var input = new Array(2); //入力キーコードが各要素に順次格納される function commandCheck(evt) { //キーコードを格納、ブラウザ毎に方法異なる var key; //document.allはIEのみ使用可能 if (document.all) { key = event.keyCode; } else { key = evt.which; } //文字列をところてんさせることでリトライ対応 for (i = 0; i < command.length; i++) { input[i] += key + ";"; while (command[i].length < input[i].length) { input[i] = input[i].substr(1); } } //入力キーコードが一致した場合に発動 if (command[0] == input[0]) { //任意の処理 alert("コナミコマンド"); input[0] = ""; } if (command[1] == input[1]) { //任意の処理 alert("瞬獄殺"); input[1] = ""; } }
ポイントとしては、
- 複数実装可能、command は一つの要素にまるっとキーコードを設定、";"で区切る
- hitCountは排除
- キー入力ごとに command と input の同一インデックスが一致するかチェック
- 一致した場合に、何かしらの処理をさせ、inputの該当インデックスをリセット
といった感じです。
とりあえずアラート表示(当記事投稿日時現在)させていますが、アイデア次第で色んなことができそうです。