jQuery でコナミコマンドを実装する方法

コマンド「上上下下左右左右BA」を入力すると何かが起こる。
ファミコン世代にはお馴染みの「コナミコマンド」を、JavaScript で実装するのが今回の目的です。プラグインは一切使わず、jQuery ライブラリのみで実装します。
プログラムの概要
キーボードから入力された情報がコナミコマンドと合致した場合に限り、処理(関数)を呼び出します。途中で入力を間違えた場合は、また最初から入力すれば大丈夫な作りにします。
入力値の判定はキーのコード情報を用いる
キーボードから入力された各キーは、JavaScript 上でキーコードなる数字の情報に置き換えることができます。つまりコナミコマンドで利用する6種類のキー ↑ ↓ ← → B A のコード値が分かれば、プログラム上で入力順が正しいか判断できるようになります。
それぞれのキーコードの取得方法に関しては、こちらのページにサンプルプログラムとして用意しているので、興味がある方はご覧になってください。
それぞれのキーに対応したコード値の一覧がこちらになります。
| キー | ↑ | ↓ | ← | → | B | A |
|---|---|---|---|---|---|---|
| コード | 38 | 40 | 37 | 39 | 66 | 65 |
このコード情報を元に、コマンド順にキーコードを並べて配列データとして保持しておきます。これはコマンドの入力順を判断するために利用します。
// コナミコマンド配列 [↑, ↑, ↓, ↓, ←, →, ←, →, B, A] konami_cmd = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
コナミコマンド実装サンプル
$(function(){
// 入力キー配列
var input_cmd = [];
// コナミコマンド配列 [↑, ↑, ↓, ↓, ←, →, ←, →, B, A]
var konami_cmd = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
// キー入力後のキーアップイベントで発動条件を監視します
$(window).keyup(function(event){
// 入力されたキーコードを入力キー配列へ追加
input_cmd.push( event.keyCode );
// 入力されたキーが正しいか判定
// ※ 入力キー配列の長さで何番目の文字を比較するかを判断する
if ( input_cmd[ input_cmd.length - 1 ] != konami_cmd[ input_cmd.length - 1 ] ) {
// 入力を間違えた場合、入力キー配列をリセット(最初からやり直し)
input_cmd = [];
}
// 全ての入力コマンドが合致したら処理を発動
else if ( input_cmd.length == konami_cmd.length ) {
// コナミコマンドによる処理実行!
konami_cmd_action();
// 処理後、改めて入力キー配列をリセット
input_cmd = [];
}
});
});
// コナミコマンド処理関数
function konami_cmd_action() {
/*---------------------------------------------
ここにコナミコマンド入力時に発動させたい処理を記載
---------------------------------------------*/
}
コナミコマンドのキーコード配列と、入力されたキー配列が同じかチェックをします。入力されたキーコードを配列へ格納し、16行目で最後に入力されたキー情報をコナミコマンド配列と比較します。途中で入力ミスをすると、18行目にある通り、入力キー配列をリセットするので、改めて最初から入力する必要があります。
全てのキーコマンドが正しく入力されると、23行目に指定した関数が動きます。具体的な処理内容は konami_cmd_action() 関数として別に定義しておきます。
このページにコナミコマンドを仕掛けてみた!
それではここでコナミコマンドを入力してみてください。このページ上で何か変化が起これば成功です!
いかがでしょうか?コナミコマンドが正しく入力されると、画面がくるっと一回転する処理を組み込んでみました。(繰り返し実行すると画面酔いするので気をつけてください。)
このページで konami_cmd_action() 関数に仕掛けた処理は次の通りです。
function konami_cmd_action() {
jQuery(function($){
$('body').animate({zIndex:1},{
duration: 5000,
easing: "linear",
step: function(now,fx){ $(this).css("transform", "rotateY(" + (now*360) + "deg)"); },
complete:function(){$("body").css("zIndex", 0);}
});
});
}
左右の矢印キーを LR キーに変更することもできる
L キーのキーコードは 76、R キーのキーコードは 82 です。コナミコマンド配列のキーコード情報を変更すれば、スーファミ版コナミコマンド「↑↑↓↓LRLRBA」にも対応が可能です。
// コナミコマンド配列 [↑, ↑, ↓, ↓, L, R, L, R, B, A] konami_cmd = [38, 38, 40, 40, 76, 82, 76, 82, 66, 65];
以上、jQuery でコナミコマンドを実装する方法でした。