Home JavaScript Greasemonkey PHP

コナミコマンド.js2009-02-10


»Download


あの懐かしい「上上下下…」の響き。伝説のコナミコマンドを、あなたのウェブページに簡単に導入する事が出来るスクリプトです。

Google Reader がコナミコマンドに対応しているというニュースを読んだらいても立ってもいられなくなり、条件反射のように作成してしまいました。

さて、とりあえずこのページ自体がサンプルになっているので、コナミコマンドを入力してみて下さい。
スクリプトの作成時間よりこの説明ページの作成時間の方が長かった事は秘密だ。

動作条件

下記のブラウザで動作確認しています。他のブラウザでも動くかも知れませんが、分かりません。
IE6、IE7、Firefox1、Firefox1.5、Firefox2.0、Safari3、Opera9
日本語入力が ON になっていたり、ウィンドウ (もしくはタブ) にフォーカスがない時は無効です。

なお、例によって ここで公開されているスクリプトは保証無しですが、著作権も放棄しています。
好きなだけ持って行って好きなだけ改造して下さい。

導入方法 (基本)

上記の Download リンクから取得した konamicommand.js ファイルを読み込むと、konamicommand 関数が利用可能になるので、コナミコマンド成功時に実行したい関数を指定するだけです。
下記のサンプルのようなコードを書くだけで、コナミコマンド成功時に指定した関数が実行されます。
<script type="text/javascript" src="konamicommand.js"></script>
<script type="text/javascript">
<!--
    function powerUp() {
        alert('パワーアップ');
    }
    konamicommand(powerUp);
//-->
</script>
上記のソースは以下のように書いても同じ意味になります。関数を 1 カ所でしか使わない場合はこの方が見やすいかも知れません。
<script type="text/javascript" src="konamicommand.js"></script>
<script type="text/javascript">
<!--
    konamicommand(function() {
        alert('パワーアップ');
    });
//-->
</script>

トグルの実装 (拡張)

コナミコマンドを繰り返し実行した際に、動作を変化させる事も出来ます。
実行時関数には、コナミコマンド実行回数のカウンタが渡されるため、そのカウンタで判別します。
カウンタは 0 から始まる整数なので、たとえばトグルは以下のように実装できます。
function powerUp(count) {
    if (count % 2 == 0) {
        // 偶数の時のみ実行
        alert('パワーアップ');
    } else {
        // 奇数の時のみ実行
        alert('元に戻す');
    }
}
konamicommand(powerUp);
凝った作りにするのなら、以下のような事も可能です。
konamicommand(function(count) {
    switch (count) {
        case 0 : alert('スピーダップ'); break;
        case 1 : alert('ミッソー'); break;
        case 2 : alert('ダボゥ'); break;
        case 3 : alert('ウェイサー'); break;
        case 4 : alert('アップシュン'); break;
        case 5 : alert('フォースフィー'); break;
        default : alert('自爆');
    }
});

別のコマンドを実行 (上級)

konamicommand 関数の第二引数に、オプションとしてコマンド文字列を渡す事が出来ます。
コマンド文字列とは、キーコードの値を「|」で区切った文字列で、任意のコマンドを指定する事が出来ます。
コマンド文字列には最初と最後にも「|」が含まれている事に注意して下さい。
この構文を使えば、隠しコマンドが作り放題です。
konamicommand(実行時関数, 'コマンド文字列');
デフォルトである「上上下下左右左右BA」のコマンド文字列は "|38|38|40|40|37|39|37|39|66|65|" になっています。
例えば、「L」の文字コードは "76" で、「R」の文字コードは "82" なので、「上上下下LRLRBA」 は次のように実装できます。
konamicommand(function() {
    alert('Ⅲ');
}, '|38|38|40|40|76|82|76|82|66|65|');
konamicommand 関数は、複数回実行しても全て有効になるため、1つのページに複数のコマンドを仕掛ける事も可能です。
このページ自体にも、通常のコナミコマンド以外の隠しコマンドが…