“RUN” それは魔法の言葉

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

116.HSPでゲーム&ウォッチのマンホールを作り直そう その5

通行人の出現フレーム数のデータを準備せずに、パターンを発生させるロジックを考えてみた。

今までは、どのタイミングで通行人を1人追加すればよいのかと考えていた。
結局、適切なロジックを思いつくことができず、出現するフレーム数のデータを用意して、ゲーム内でカウントしていたフレームと、同じフレーム数の時に、512(1人)を足していた。

ふと、「なぜ1人ずつ足してたのだろう?、そうだ!次の出現パターンを丸ごと足してしまえば!」と考えた。
ただ、単純に足すのは難しい。そこでバッファ方式を取ることにした。

今までは画面内の10か所だけをビットに見立てて10ビットで管理していたが、バッファとしてさらに10ビット分のエリアを設けて、そこに次の出現パターンを足していくことにした。
このバッファを含めた通行人を表す数値を、1サイクルごとに1回右にシフトして、通行人を歩かせる。

f:id:CORO3:20220126004120p:plain

通行人が一通り動くのは、10回進めたとき。上下段ともに10回ずつ右シフトしたタイミングで、次の10か所分の通行人をパターンで足すようにしてみた。
パターンは、通行人の最大数に合わせて、上下でパターンを用意して、ランダムで足すことにする。

20ビットの内、上位の10ビットをバッファにするので、次の出現パターンとして、一番左に1人出現させる場合、10進数で524288を足すことになる。
パターンを用意するときには、もっと単純化したいので、10ビット分の数値でパターンを準備して、バッファに足すときに、左に10ビットシフトすることにした。

f:id:CORO3:20220125231637p:plain

長くなってきたので続く。