ワンポイントテクニック No.015 G800シリーズ対応

アナログ的なキー入力を行う


 ゲームを作る場合、そのゲームに適した入力方法が欲しいですが、キーボードを使う場合その操作方法は限られます。しかし、ちょっとした工夫をすればアナログ的な入力が可能になるのです。
 仕組みは簡単で単に指の移動速度を計測するだけです。

 速度は距離が固定ならば時間に反比例するため指を一定距離動作させてそれにかかる時間を計測すれば良いということが分かると思います。
 問題はどのキーを使うかですが、これは操作ミスの可能性が少なく、ある程度の距離があり、しかも入力判定が容易なPFキーを使うことにします。PFキーであればアスキーコードF1h〜F5hの順番に並んでいるため判定もかなり楽になります。PFキーのないG800シリーズでは他のキーを割り当てることで使用可能になりますが判定がE500のように簡単にはいかないためBASICでは実用レベルに達しないかもしれません。

100 *KEY T=0:FOR K=241TO 245
110 T=T+1:IF ASC INKEY$=K NEXT :RETUEN ELSE 110

 [PF1]から[PF5]の上を指でスライドさせそれにかかった時間を計測することによって指の移動速度を計算可能になります。これはゴルフゲームなどのパワーゲージを使ったゲームを作る際に活用できると思います。
 この入力方法の欠点としては、まず1つ目がスライドさせる関係上ゴムキーであるPC-E500では操作が難しくプラスティックキーであるPC-E650が推奨になってしまうという点です。もう1つが速く動作させるとPFキーをまたがって押してしまい順番に全部押していくことが必須なのに押されてないと判断されてしまうことがある(処理速度の問題ではなくポケコンのキーの戻り速度の限界を超えてしまうため発生するハードウェア的な要因)という点です。これはゴルフゲームに用いた場合であれば力みすぎてミスショットをしたと解釈すれば問題はないでしょう。

 また、[PF1]から[PF5]までのそれぞれのラップタイムを計測することによって速度の変化を調べればパワーだけではなく別の要素も判断可能になります。ファミコンの「ゴルフ」のように正確にパワーゲージを合わせないとまっすぐ飛ばないというものと同じく各キーを押す時間を均等にしないとまっすぐ飛ばないゴルフゲームなどを作ることもできます。
 その他、いろいろと工夫要素はあるので試してみてください。なお、キーは[PF1]を起点にして判定していますが、最初に指を置く位置はその左にある[◆]にするのが最も押しやすいと思います。



 このアナログ的なキー入力を使ってサンプルゲームを作ってみました。題して「1Dゴルフ」です。要はパットゴルフですが、シンプルにまとめるためにボールの移動は直線のみ(つまり一次元的な描写)となっています。
 左端にあるボール(ドット)をこのアナログ的なキー入力を用いて右端のホール(。)に入れてください。リトライは[RETURN]キーです。
 シンプルな内容なだけに一般的なパワーゲージを使用したゲームとは異なるゲーム性となっていることがよく分かると思います。

《 「1Dゴルフ」 プログラムリスト 》
10 WAIT 0:CLEAR
20 S=S+1:CLS :LOCATE 5,1:PRINT "SHOT";S:LOCATE 39:PRINT"。":GOSUB 90
30 IF ASC INKEY$ =241GOSUB *KEY:V=30/T ELSE 30
40 GOSUB 90:V=V-0.01:IF V<0THEN 70
50 IF INT X=235AND V<0.3BEEP 1:WAIT :PRINT "CUP IN!":GOTO 10
60 GOTO 40
70 IF X>235THEN X=470-X
80 GOTO 20
90 PRESET (X,21):X=X+V:PSET (X,Y):RETURN
100 *KEY T=0:FOR K=241TO 245
110 T=T+1:IF ASC INKEY$=K NEXT :RETUEN ELSE 110


RETURN

inserted by FC2 system