“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

266.LCD風ゲームを作ろう 月面鮫 その4

ゲームセレクト画面や、マニュアル表示は後回しにして、ゲーム本体の処理を作っていく。
画面サイズを「竜巻鮫」と同じにしたこともあり、タッチ処理の部分などは、ほぼ流用できる。

まずはプレイヤーの移動処理を作った。が、特別書くことはないのでスキップww

次に落下人の処理を作っていく。ここが今回のキモだった。

はじめは、初代「ファイア」をHSP3で作った時と同じように、各ポジション、今回は22か所あるのでそれぞれを1ビットに見立て、22ビット分をシフト処理で作るつもりだった。

YouTubeのプレイ動画を眺めていると、どうも、奇数位置→偶数位置の順番に、落下人を動かしているように見えたので、ビット管理をやめて、最初に作った「ファイア」と同じように、文字列で位置を表すようにして、処理を奇数、偶数の順に動かすようにしてみた。
が、全然動きがしっくりこない。常にすべての落下人がひょこひょこと動いてしまう。

プレイ動画をもっとよく見てみると、ずれて動くこともあれば、一緒に動くこともあることに気づき、コマ送りw

やっとカラクリが分かった!「パラシュート」などと同じ、ラインごとに動かす処理をしていた。
各ポジションまでの落下を1つのラインに見立てて、4つのラインで構成していた。

別のラインだと別々に動いているけど、同じラインになったら同時に動くというのに合点がいった。
よくよく考えたら、電卓用のICを流用して作っているゲームウォッチが、22ビットもの数を扱うわけがないのだったww

ここまで分かったら、「竜巻鮫」や「パラシュート」の再現と同じようにラインを配列でもって、それぞれのラインの落下ポジションごとに判定をするよう、作っていく。

少々考えることになったのは、キャッチ判定と次のラインへの引継ぎだった。
キャッチ判定は、「ファイヤ」や「パラシュート」と同じように、プレイヤー側が有利になるように、ミスになるのは、次にそのラインを処理するまでにキャッチできないときにした。

で、キャッチしたらどうするか。現在のラインから、落下人を削除する。そして、次のラインの最初のビットを1にすると引き継げる。

どのタイミングで次のラインに引き継ぐか。単純に各プレイヤーポジションごとにキャッチフラグを配列で定義。
次にラインを動かすときに、キャッチフラグをみて、キャッチしていたら1ビット目を立てるようにした。

ただ、こうしてしまうと、1ライン目でキャッチ→キャッチフラグを立てる→2ライン目の処理で1つ余計に進んでいるように見える。
プレイ動画もほぼ同じような動きだったので、処理をこれ以上複雑にしなくて済んだ。

これで、実際の動画とほぼ同じように、落下人が動くようになった。