お知らせ:「コナミコマンド」を実装しました」によると、コナ○コマンドはできるらしいです。コードを見てもらうとわかりますが、if 文で普通に分岐しています。これはこれでお手軽な実装ですが、こういうものを見ると一般化してみたくなります。

上記サイトより抜粋:
var konmaiFlag = 0;
function konmaiCommand(konmaiKey){
	if (konmaiKey == 38 & konmaiFlag == 0){//上
		konmaiFlag = 1;
	}else if (konmaiKey == 38 & konmaiFlag == 1){//上
		konmaiFlag = 2;
	}else if (konmaiKey == 40 & konmaiFlag == 2){//下
		konmaiFlag = 3;

キーの配列を受け取ったら実行してくれるクラスがあると便利ですよね。特に以下のような書き方ができたら楽しいですね。

// 上、上、下、下、左、右、左、右、b、a
var keys = [38,38,40,40,37,39,37,39,66,65];
var processor = new KeyCommandProcessor(keys, onSuccess, onError);

作成してみました。以下にサンプルページ+全ソースコードがあります。
キー入力サンプルページ(IE/Firefox)

でも、上記の実装だと、波○拳を繰り出すことはできません。なぜなら、複数のキーの同時押しができないからです。この手の実装はゲーム開発者にとっては当たり前のものだと思いますが、馴染みがないとなかなか難しいです。ス○2の波○拳の場合、下、下右、右、パンチです。私の記憶が正しければ。ここでは、↓、↓→、→、A を実現するようにします。とりあえず以下のような書き方をしたいものです。

// 下、下右、右、a
var keys = [40,[40,39],39,65];
var processor = new KeyCommandProcessor(keys, onSuccess, onError);

作成してみました。以下にサンプルページ+全ソースコードがあります。ポイントは入力したキーを複数個持つことです。prototype.js とか使って配列を操作する機能を強化すれば、半分くらいのコードで書けると思います。でもまぁ、ここまで来るとあまり、手軽なものにはなりませんね。
キー入力サンプルページ(IE/Firefox)

実は現時点でも結構手抜き実装(格闘ものならもっとキー操作は厳密にする方が良いです。)ですが、ずいぶん進歩した気がしますね。上記のコードは全てパブリックドメインです。かなりバグがあると思いますが、適当に料理してやってください。

Posted by あかさた
最近のエントリ
最近の読書メモ