“RUN” それは魔法の言葉

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

129.HSPでゲームを作ろう:シューティングゲームっぽい何か その6

ここまで、やりたいアイデアの大半を実現できた。
さらに一歩進めるために、細胞のスプライト1つずつに対して、情報を管理しなくてはならない。

配列変数で管理するのは、少々面倒。画面外にでたり、破壊された細胞のスプライト番号は、再利用されることが前提になるため、消えた後の処理が煩雑になる。

そこで、スプライトパラメーターを使うことを思いついた。ESI_OPTIONという項目が、ユーザが使えるのだが、セットできるのは整数で、かつ1つだけだった。
複数のフラグなどの情報を持たせたかったので、困ったことになった。

整数だけではあるけど、32ビット分は使える。なので、フラグごとに最大値を決めて、何ビットを使うかを洗い出した。
洗い出した項目はこんな感じ。

  • 細胞の膨張段階 0~4 3ビット
  • 細胞が1段階膨らむまでの耐久弾数 1~7 3ビット
  • 細胞の色パターン番号 2~6 3ビット
  • 追尾フラグ 0/1 1ビット
  • 追尾回数 0~7 3ビット

    計:13ビット

そして、それらのビットをすべて繋げて、1つの整数値としてESI_OPTIONにセットすればよいなと。

ビットごとに分けるというキーワードから、ピンと来てる読者の方もいると思うけど、もうおなじみになった、ビット演算を利用することにした。
右詰めで配置したビットの○ビット目から△ビットまでを取り出して、一番末端のビットが右端になるまでシフトすれば、数値として扱えるし、複数の意味を一つの数値に持たせられる。
問題は、これらの値を設定する、取り出す方法だった。

次回に続く。