コナミコマンド.js2009-02-10
あの懐かしい「上上下下…」の響き。伝説のコナミコマンドを、あなたのウェブページに簡単に導入する事が出来るスクリプトです。
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つのページに複数のコマンドを仕掛ける事も可能です。このページ自体にも、通常のコナミコマンド以外の隠しコマンドが…