Re: 考察「コマンド入力」(長文)



[ このメッセージへの返事 ] [ 返事を書く ] [ home.html ]



投稿者: KiRYU @ 159.153.72.134 on 97/9/17 20:35:32

In Reply to: 私は2Dシューティング

posted by けいちょん @ r3.fujitsu.co.jp on 97/9/17 19:42:34

> ところで 格闘ゲームって コマンド入力しますよね?
> あの 判定って BASICじゃぁ むちゃくちゃ厳しいと思うのですけど。
>
> たとえば(テンキーで書きます)
> 623P で技を出そうとすると、実際のパッドの入力は
>
> 66666666665551111112222222222233333333666PPPPPP
>
> なんて なっているわけですよ(5は十字キー押してない状態ね)。
> これを BASICで解析しようと思うとそれだけで 重くなっちゃいそうなんですけど。
>
> うまいやりかた あるかな?

623Pは難易度高いのですが
自分はバーチャ式(パソコンの格闘ゲーム式?)で試してみようかと...

下入力認識用変数や後ろ方向(右向きの場合は左)入力認識用変数を用意して
おいて、たとえば...
「下方向に入力してから1/10秒以内に前方向及びPを入力」
(1/10秒を過ぎたら変数をOFFする)
とか、
この条件に「下方向を一定時間押した後に」という条件を加えれば、バーチャ
等で見られる「ぐいっと下→前方向+P(2ため6P)」になると。

ちなみに、昔考えていた623Pコマンド処理法は
1.入力されたキーの方向をひとつデータにしておく(変数ではなく文字型変数)
2.一定時間ごとに、そのデータをシフトして古い入力データを消去していく
3.PもしくはKボタンが押されたらコマンドと一致しているかチェックする。
といったものでした。

例).変数15文字で1/15秒入力だった場合(1秒前の入力方向まで保存)

現在のデータの内容=111111116662222
1/15経過したので割り込み、入力方向をチェック、
その結果3に入力されていた場合、
111111116662222というデータの一番左端の1を消去して
右端に3を付け足して
111111166622223というデータに更新する。
といった感じで1/15秒ごとに割り込んでデータを更新していくと。
で、P等のボタンが入力されたら「コマンド識別ルーチン」にGOTO(GOSUB)する。
でデータ内の重複するデータを圧縮すると
111111166622223→1623というデータに変換される。
であとはデータの右端から3文字目までをチェックして、コマンドとして登録してある
文字型変数と内容が一致しているかを調べてみて。
一致していたらコマンド技が発動する。
ってな感じで...

でも、どちらも実際に組んで試してみたわけではないですが(苦笑)。

ちょっと(だいぶ)わかりにくい文面になってしまったので、もし
「こんな文面じゃ、わかんね〜よ!」って場合には明日にでも再度説明します。
(そろそろ帰社する時間なのです。)

補足:自分の考え方では、
Pを入力したかどうかの変数(0・1)
Kを入力したかどうかの変数(0・1)
入力方向を示す変数(0〜8)
(↑未入力=0。上方向から時計周りで1〜8。だから左=7・下=5となります)
の3つの変数が基本となっています。